android > 建立WIFI 热点
16lz
2021-12-04
WifiApAdmin.java
package home.mft;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.Timer;import java.util.TimerTask;import android.content.Context;import android.net.wifi.WifiConfiguration;import android.net.wifi.WifiManager;import android.util.Log;public class WifiApAdmin {public static final String TAG = "WifiApAdmin";public static void closeWifiAp(Context context) {WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); closeWifiAp(wifiManager);}private WifiManager mWifiManager = null;private Context mContext = null;public WifiApAdmin(Context context) {mContext = context;mWifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE); closeWifiAp(mWifiManager);}private String mSSID = "";private String mPasswd = "";public void startWifiAp(String ssid, String passwd) {mSSID = ssid;mPasswd = passwd;if (mWifiManager.isWifiEnabled()) {mWifiManager.setWifiEnabled(false);} stratWifiAp();MyTimerCheck timerCheck = new MyTimerCheck() {@Overridepublic void doTimerCheckWork() {// TODO Auto-generated method stubif (isWifiApEnabled(mWifiManager)) {Log.v(TAG, "Wifi enabled success!");this.exit();} else {Log.v(TAG, "Wifi enabled failed!");}}@Overridepublic void doTimeOutWork() {// TODO Auto-generated method stubthis.exit();}};timerCheck.start(15, 1000);}public void stratWifiAp() {Method method1 = null;try {method1 = mWifiManager.getClass().getMethod("setWifiApEnabled",WifiConfiguration.class, boolean.class);WifiConfiguration netConfig = new WifiConfiguration();netConfig.SSID = mSSID;netConfig.preSharedKey = mPasswd;netConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);netConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN);netConfig.allowedProtocols.set(WifiConfiguration.Protocol.WPA);netConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);netConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);netConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);netConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);netConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);method1.invoke(mWifiManager, netConfig, true);} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InvocationTargetException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SecurityException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (NoSuchMethodException e) {// TODO Auto-generated catch blocke.printStackTrace();}}private static void closeWifiAp(WifiManager wifiManager) {if (isWifiApEnabled(wifiManager)) {try {Method method = wifiManager.getClass().getMethod("getWifiApConfiguration");method.setAccessible(true);WifiConfiguration config = (WifiConfiguration) method.invoke(wifiManager);Method method2 = wifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class);method2.invoke(wifiManager, config, false);} catch (NoSuchMethodException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InvocationTargetException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}private static boolean isWifiApEnabled(WifiManager wifiManager) {try {Method method = wifiManager.getClass().getMethod("isWifiApEnabled");method.setAccessible(true);return (Boolean) method.invoke(wifiManager);} catch (NoSuchMethodException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (Exception e) {e.printStackTrace();}return false;}}
MyTimerCheck.java
package home.mft;public abstract class MyTimerCheck {private int mCount = 0;private int mTimeOutCount = 1;private int mSleepTime = 1000; // 1sprivate boolean mExitFlag = false;private Thread mThread = null;/** * Do not process UI work in this. */public abstract void doTimerCheckWork();public abstract void doTimeOutWork();public MyTimerCheck() {mThread = new Thread(new Runnable() {public void run() {// TODO Auto-generated method stubwhile (!mExitFlag) {mCount++;if (mCount < mTimeOutCount) {doTimerCheckWork();try {mThread.sleep(mSleepTime);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();exit();}} else {doTimeOutWork();}}}});}/** * start * @param times How many times will check? * @param sleepTime ms, Every check sleep time. */public void start(int timeOutCount, int sleepTime) {mTimeOutCount = timeOutCount;mSleepTime = sleepTime;mThread.start();}public void exit() {mExitFlag = true;}}
然后是调用 HomeIndex.java
package home.mft;import hotspot.mft.R;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import android.app.Activity;import android.content.Context;import android.net.wifi.WifiConfiguration;import android.net.wifi.WifiManager;import android.os.Bundle;import android.view.View;import android.widget.Button;public class HomeIndex extends Activity {private Button button1; /** Called when the activity is first created. */private Context mContext = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mContext = HomeIndex.this; setContentView(R.layout.main); button1 = (Button)findViewById(R.id.button1); button1.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubWifiApAdmin wifiAp = new WifiApAdmin(mContext);wifiAp.startWifiAp("mftAP", "123456789");//\}}); //\\ }}
manifest 权限
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" ></uses-permission> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" ></uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" ></uses-permission> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" ></uses-permission><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission><uses-permission android:name="android.permission.INTERNET"></uses-permission><uses-permission android:name="android.permission.ACCES_MOCK_LOCATION"></uses-permission>
更多相关文章
- Android(安卓)Camera 使用小结
- onSaveInstanceState和onRestoreInstanceState触发的时机
- Android切换横屏竖屏生命周期变化
- android录音和得到音量
- android 拨号
- Android深入浅出之Binder机制
- android 随手记 SQLITE代码 直接能用
- android视频截图
- android实现拨打电话