1 package com.myapp.android.activity.wifi;  2   3 import android.app.ProgressDialog;  4 import android.content.Context;  5 import android.net.wifi.WifiConfiguration;  6 import android.net.wifi.WifiManager;  7 import android.os.AsyncTask;  8 import android.os.Bundle;  9 import android.view.View; 10 import android.view.WindowManager; 11 import android.widget.Button; 12  13 import java.lang.reflect.Method; 14  15 public class WifiAP extends BaseActivity { 16  17     // boolean mIsWifiEnabled = false; 18     private static final int WIFI_AP_STATE_UNKNOWN = -1; 19     private static final int WIFI_AP_STATE_DISABLING = 0; 20     private static final int WIFI_AP_STATE_DISABLED = 1; 21     private static final int WIFI_AP_STATE_ENABLING = 2; 22     private static final int WIFI_AP_STATE_ENABLED = 3; 23     private static final int WIFI_AP_STATE_FAILED = 4; 24  25     private final String[] WIFI_STATE_TEXTSTATE = new String[] { 26         "DISABLING","DISABLED","ENABLING","ENABLED","FAILED" 27     }; 28  29     private WifiManager wifi; 30  31     @Override 32     protected void onCreate(Bundle icicle) { 33         super.onCreate(icicle); 34         setContentView(R.layout.wifi); 35         getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD 36                 |WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON 37                 |WindowManager.LayoutParams.FLAG_DIM_BEHIND 38         ); 39  40         wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 41     } 42  43     @Override 44     public void onResume() { 45         super.onResume(); 46         updateStatusDisplay(); 47     } 48  49     public void toggleWifi(View v) { 50         boolean wifiApIsOn = getWifiAPState()==WIFI_AP_STATE_ENABLED || getWifiAPState()==WIFI_AP_STATE_ENABLING; 51         new SetWifiAPTask(!wifiApIsOn,false).execute(); 52     } 53  54     public void close(View v) { 55         boolean wifiApIsOn = getWifiAPState()==WIFI_AP_STATE_ENABLED || getWifiAPState()==WIFI_AP_STATE_ENABLING; 56         if (wifiApIsOn) { 57             new SetWifiAPTask(false,true).execute(); 58         } else { 59             finish(); 60         } 61     } 62  63  64     /** 65      * Endable/disable wifi 66      * @param enabled 67      * @return WifiAP state 68      */ 69     private int setWifiApEnabled(boolean enabled) { 70         Log.d("WifiAP", "*** setWifiApEnabled CALLED **** " + enabled); 71         if (enabled && wifi.getConnectionInfo() !=null) { 72             wifi.setWifiEnabled(false); 73             try {Thread.sleep(1500);} catch (Exception e) {} 74         } 75  76         //int duration = Toast.LENGTH_LONG; 77         //String toastText = "MobileAP status: "; 78         int state = WIFI_AP_STATE_UNKNOWN; 79         try { 80             wifi.setWifiEnabled(false); 81             Method method1 = wifi.getClass().getMethod("setWifiApEnabled", 82                 WifiConfiguration.class, boolean.class); 83             method1.invoke(wifi, null, enabled); // true 84             Method method2 = wifi.getClass().getMethod("getWifiApState"); 85             state = (Integer) method2.invoke(wifi); 86         } catch (Exception e) { 87            Log.e(WIFI_SERVICE, e.getMessage()); 88            // toastText += "ERROR " + e.getMessage(); 89         } 90  91         if (!enabled) { 92             int loopMax = 10; 93             while (loopMax>0 && (getWifiAPState()==WIFI_AP_STATE_DISABLING 94                     || getWifiAPState()==WIFI_AP_STATE_ENABLED 95                     || getWifiAPState()==WIFI_AP_STATE_FAILED)) { 96                 try {Thread.sleep(500);loopMax--;} catch (Exception e) {} 97             } 98             wifi.setWifiEnabled(true); 99         } else if (enabled) {100             int loopMax = 10;101             while (loopMax>0 && (getWifiAPState()==WIFI_AP_STATE_ENABLING102                     || getWifiAPState()==WIFI_AP_STATE_DISABLED103                     || getWifiAPState()==WIFI_AP_STATE_FAILED)) {104                 try {Thread.sleep(500);loopMax--;} catch (Exception e) {}105             }106         }107 108         return state;109     }110 111 112     private int getWifiAPState() {113         int state = WIFI_AP_STATE_UNKNOWN;114         try {115             Method method2 = wifi.getClass().getMethod("getWifiApState");116             state = (Integer) method2.invoke(wifi);117         } catch (Exception e) {}118         Log.d("WifiAP", "getWifiAPState.state " + (state==-1?"UNKNOWN":WIFI_STATE_TEXTSTATE[state]));119         return state;120     }121 122     private void updateStatusDisplay() {123 124         if (getWifiAPState()==WIFI_AP_STATE_ENABLED || getWifiAPState()==WIFI_AP_STATE_ENABLING) {125             ((Button)findViewById(R.id.btnWifiToggle)).setText("Turn off");126             findViewById(R.id.bg).setBackgroundResource(R.drawable.bg_wifi_on);127         } else {128             ((Button)findViewById(R.id.btnWifiToggle)).setText("Turn on");129             findViewById(R.id.bg).setBackgroundResource(R.drawable.bg_wifi_off);130         }131 132     }133 134 135     class SetWifiAPTask extends AsyncTask<Void, Void, Void> {136 137         boolean mMode;138         boolean mFinish;139 140         public SetWifiAPTask(boolean mode, boolean finish) {141             mMode = mode;142             mFinish = finish;143         }144 145         ProgressDialog d = new ProgressDialog(WifiAP.this);146 147         @Override148         protected void onPreExecute() {149             super.onPreExecute();150             d.setTitle("Turning WiFi AP " + (mMode?"on":"off") + "...");151             d.setMessage("...please wait a moment.");152             d.show();153         }154 155         @Override156         protected void onPostExecute(Void aVoid) {157             super.onPostExecute(aVoid);158             try {d.dismiss();} catch (IllegalArgumentException e) {};159             updateStatusDisplay();160             if (mFinish) finish();161         }162 163         @Override164         protected Void doInBackground(Void... params) {165             setWifiApEnabled(mMode);166             return null;167         }168     }169 170 171 }

这是在stackoverflow上看到的一个例子,但是运行不成功,原因不详..继续了解中...

更多相关文章

  1. ”Android(安卓)Application Framework FAQ“关于Android框架的
  2. React-native 问题汇总
  3. android contentProvider 小例子
  4. android 查看手机运行的进程列表
  5. android 图片拖动简单例子
  6. AndroidOAuth认证例子
  7. ExpandableButtonMenu |底部弹出菜单
  8. Android(安卓)Studio入门小例子
  9. 运行时获取Android(安卓)API版本

随机推荐

  1. 支付宝Android接口4.0以上报错Failure ca
  2. [UI]抽屉菜单DrawerLayout分析(一)
  3. Android之取消ViewPage+Fragment的预加载
  4. 深入理解Android开篇之Android源代码编译
  5. 浅谈Android软件安全自动化审计
  6. iPhone5将于2011年9月7号发行
  7. 你有被银行套路过吗?| 一文教你计算真实的
  8. Android(安卓)蓝牙通信
  9. Android(安卓)下载模块分析(DownloadMana
  10. android 基本布局(RelativeLayout、TableL