开启android手机的wifi热点

来源:互联网 发布:域名再长我也记得住 编辑:程序博客网 时间:2024/04/30 01:16

因为无线wifi不能和wufi热点同时打开,所以开启wifi热点的时候要监测是否打开了wifi,打开了就要关闭


[java] view plaincopy
  1. wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);  
[java] view plaincopy
  1. private void startWifiAp() {  
  2.     handler = new Handler();  
  3.     if (wifiManager.isWifiEnabled()) {  
  4.         closeWifiHandler = new Handler() {  
  5.             @Override  
  6.             public void handleMessage(Message msg) {  
  7.                 startWifiApTh();  
  8.                 super.handleMessage(msg);  
  9.             }  
  10.         };  
  11.         cwt = new CloseWifiThread();  
  12.         Thread thread = new Thread(cwt);  
  13.         thread.start();  
  14.   
  15.     }else{  
  16.         startWifiApTh();  
  17.     }  
  18.   
  19.   
  20. }  
  21.   
  22. class CloseWifiThread implements Runnable {  
  23.     public CloseWifiThread() {  
  24.         super();  
  25.     }  
  26.   
  27.     @Override  
  28.     public void run() {  
  29.         int state = wifiManager.getWifiState();  
  30.         if (state == WifiManager.WIFI_STATE_ENABLED) {  
  31.             wifiManager.setWifiEnabled(false);  
  32.             closeWifiHandler.postDelayed(cwt, 1000);  
  33.         } else if (state == WifiManager.WIFI_STATE_DISABLING) {  
  34.             closeWifiHandler.postDelayed(cwt, 1000);  
  35.         }else if(state == WifiManager.WIFI_STATE_DISABLED){  
  36.             closeWifiHandler.sendEmptyMessage(0);  
  37.         }  
  38.   
  39.     }  
  40. }  
  41.   
  42. private void startWifiApTh(){  
  43.     swat = new StratWifiApThread();  
  44.     Thread thread = new Thread(swat);  
  45.     thread.start();  
  46. }  
  47. class StratWifiApThread implements Runnable {  
  48.     public StratWifiApThread() {  
  49.         super();  
  50.     }  
  51.   
  52.     @Override  
  53.     public void run() {  
  54.         // TODO Auto-generated method stub  
  55.         WifiUtil mWifiUtil = new WifiUtil();  
  56.         int state = mWifiUtil.getWifiApState(wifiManager);  
  57.         if (state == WifiUtil.WIFI_AP_STATE_DISABLED) {  
  58.             mWifiUtil.stratWifiAp(wifiManager);  
  59.             handler.postDelayed(swat, 1000);  
  60.         } else if (state == WifiUtil.WIFI_AP_STATE_ENABLING  
  61.                 || state == WifiUtil.WIFI_AP_STATE_FAILED) {  
  62.             handler.postDelayed(swat, 1000);  
  63.         }else if (state == WifiUtil.WIFI_AP_STATE_ENABLED){  
  64.             Toast.makeText(ActivityForAndroid.this"已开启wlan热点"2000).show();  
  65.         }  
  66.     }  
  67.   
  68. }  

[java] view plaincopy
  1. public class WifiUtil {  
  2.   
  3.     public static final int WIFI_AP_STATE_DISABLING = 0;  
  4.     public static final int WIFI_AP_STATE_DISABLED = 1;  
  5.     public static final int WIFI_AP_STATE_ENABLING = 2;  
  6.     public static final int WIFI_AP_STATE_ENABLED = 3;  
  7.     public static final int WIFI_AP_STATE_FAILED = 4;  
  8.   
  9.     public void stratWifiAp(WifiManager wifiManager) {  
  10.         // WifiManager wifi = (WifiManager)  
  11.         // getSystemService(Context.WIFI_SERVICE);  
  12.         // wifiManager.setWifiEnabled(false);  
  13.         Method method1 = null;  
  14.         try {  
  15.             method1 = wifiManager.getClass().getMethod("setWifiApEnabled",  
  16.                     WifiConfiguration.classboolean.class);  
  17.             WifiConfiguration netConfig = new WifiConfiguration();  
  18.             //wifi热点名字  
  19.             netConfig.SSID = "\" T  E S T \"";  
  20.             netConfig.allowedAuthAlgorithms  
  21.                     .set(WifiConfiguration.AuthAlgorithm.OPEN);  
  22.             netConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN);  
  23.             netConfig.allowedProtocols.set(WifiConfiguration.Protocol.WPA);  
  24.             netConfig.allowedKeyManagement  
  25.                     .set(WifiConfiguration.KeyMgmt.WPA_PSK);  
  26.             netConfig.allowedPairwiseCiphers  
  27.                     .set(WifiConfiguration.PairwiseCipher.CCMP);  
  28.             netConfig.allowedPairwiseCiphers  
  29.                     .set(WifiConfiguration.PairwiseCipher.TKIP);  
  30.             netConfig.allowedGroupCiphers  
  31.                     .set(WifiConfiguration.GroupCipher.CCMP);  
  32.             netConfig.allowedGroupCiphers  
  33.                     .set(WifiConfiguration.GroupCipher.TKIP);  
  34.             //密码  
  35.             netConfig.preSharedKey = "\"11111111\"";  
  36.   
  37.             method1.invoke(wifiManager, netConfig, true);  
  38.             // Method method2 =  
  39.             // wifiManager.getClass().getMethod("getWifiApState");  
  40.             // int state = (Integer) method2.invoke(wifiManager);  
  41.             // Log.i("wifi state" + state);  
  42.         } catch (IllegalArgumentException e) {  
  43.             // TODO Auto-generated catch block  
  44.             e.printStackTrace();  
  45.         } catch (IllegalAccessException e) {  
  46.             // TODO Auto-generated catch block  
  47.             e.printStackTrace();  
  48.         } catch (InvocationTargetException e) {  
  49.             // TODO Auto-generated catch block  
  50.             e.printStackTrace();  
  51.         } catch (SecurityException e) {  
  52.             // TODO Auto-generated catch block  
  53.             e.printStackTrace();  
  54.         } catch (NoSuchMethodException e) {  
  55.             // TODO Auto-generated catch block  
  56.             e.printStackTrace();  
  57.         }  
  58.   
  59.     }  
  60.   
  61.     public int getWifiApState(WifiManager wifiManager) {  
  62.         try {  
  63.             Method method = wifiManager.getClass().getMethod("getWifiApState");  
  64.             int i = (Integer) method.invoke(wifiManager);  
  65.             Log.i("wifi state:  " + i);  
  66.             return i;  
  67.         } catch (Exception e) {  
  68.             Log.i("Cannot get WiFi AP state" + e);  
  69.             return WIFI_AP_STATE_FAILED;  
  70.         }  
  71.     }  
  72. }  

上面的代码用到handler每隔1秒post线程来监测是否关闭了wifi 和是否打开了wifi热点..不知道还有没有其他更好的方法..


wifiutil类的打开wifi热点的代码用到java的反射类 还在学习..
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝联盟领券销售怎么办 微信返利被骗了怎么办 众筹失败后资金怎么办 健身房不给退卡怎么办 婆婆陷入民间传销组织怎么办 被三生公司骗了怎么办? ppt保存成了图片怎么办 苹果6速度变慢了怎么办 苹果6s速度很慢怎么办 微信支付上限了怎么办 佳享健康骗老人怎么办 宝宝吃了硅胶乳贴怎么办 用完卫生巾后阴部有些不舒服怎么办 指甲上有荧光剂怎么办 小孩吃了荧光剂怎么办 毛巾上有荧光剂怎么办 用过劣质面膜后怎么办 液体硅胶奶嘴煮完有味怎么办 后跟贴粘在鞋上怎么办 优化营商环境公安怎么办 提升营商环境公安怎么办 准予迁入证明过期了怎么办 粉底液容易脱妆怎么办 家人进了火疗传销怎么办 自发热护膝洗了怎么办 用气垫bb卡粉怎么办 贴药膏后皮肤过敏红肿怎么办 贴完膏药皮肤痒怎么办 猕猴桃吃的嘴疼怎么办 摩拜单车怎么办月卡 出国忘了带护照怎么办 雅漾喷雾失压了怎么办 洗衣服时衣服粘上卫生纸怎么办 一晚上卫生巾都是满的怎么办 宝宝头上痱子痒怎么办 短裤里的宽松紧带拧了怎么办 肉色内衣被染黑色了怎么办 安全裤总往上缩怎么办 夏天穿裙子膝盖怕凉怎么办 夏天穿裙子膝盖冷怎么办 天凉嗓子痒咳嗽怎么办