asysbang

标题: Wifi热点 [打印本页]

作者: admin    时间: 2015-7-17 14:52
标题: Wifi热点
*****WIFI热点和WIFI直连是2个不同的功能
热点相当于创建一个路由器  
直连是p2p的和蓝牙连接一样

先研究“设置”里面wifi热点相关的代码

res/xml/tether_prefs.xml 这个是热点设置界面的布局,包含usb  wifi和bluetooth

对应的java文件是TetherSettings

wifi热点是里面的WifiApEnabler

    public boolean onPreferenceChange(Preference preference, Object value) {
        boolean enable = (Boolean) value;

        if (enable) {
            startProvisioningIfNecessary(WIFI_TETHERING);
        } else {
            mWifiApEnabler.setSoftapEnabled(false);
        }
        return false;
    }

先isProvisioningNeeded 做判断,然后调用startTethering 开启
mWifiApEnabler.setSoftapEnabled(true);


先通过int wifiState = mWifiManager.getWifiState();获得当前wifi状态,如果是wifi开启或开启中的状态,则关闭wifi并保存wifi状态

普通应用要想调用只能通过反射
        WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
        try {
            Class<?> forName = Class.forName("android.net.wifi.WifiManager");
            Method declaredMethod = forName.getDeclaredMethod("setWifiApEnabled", new Class[]{WifiConfiguration.class,boolean.class});
            declaredMethod.invoke(wm, new Object[]{null, true});
        } catch (Exception e) {
            e.printStackTrace();
        }
需要添加<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>


mWifiManager.getWifiApConfiguration();  可以获得ap的配置参数










欢迎光临 asysbang (http://asysbang.com/) Powered by Discuz! X2.5