Android_OTT的wifi热点建立
来源:互联网 发布:海纳百川软件安卓版 编辑:程序博客网 时间:2024/06/05 09:46
最近几天公司要求做一个建立wifi热点的apk,看了下系统设置的源码和SDK,因为我做的开发是在OTT之上,所以结合OTT的特点,有如下总结。
wifi热点是将机顶盒的有线网络通过wifi来共享出来,就是将机顶盒虚拟成一个无线路由器,所以在建立wifi热点时机顶盒上的wifi状态是要关闭的,在开启热点之前要判断当前的有线连接是否是有效的,判断是否是connected。代码如下
// 判断当前是否联网,如果联网了。判断是不是eth
public boolean isAvailableEth() {
ConnectivityManager mConnManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo mInfo = mConnManager.getActiveNetworkInfo();
if (mInfo != null) {
if (mInfo.isAvailable() && mInfo.isConnected() && !mInfo.getTypeName().equals("WIFI")) {
return true;
}
return false;
}
return false;
public boolean setWifiApEnabled(String ssid ,String key ,String security, boolean enabled) {
mWifiConfig.SSID = ssid ;
if(security.equals("open")){
mWifiConfig.allowedKeyManagement.set(KeyMgmt.NONE);
}else{
mWifiConfig.allowedKeyManagement.set(KeyMgmt.WPA_PSK);
mWifiConfig.allowedAuthAlgorithms.set(AuthAlgorithm.OPEN);
mWifiConfig.preSharedKey = key ;
}
try {
if (enabled) { // disable WiFi in any case
mWifiManager.setWifiEnabled(false);
}
Method method = mWifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class,boolean.class);
return (Boolean) method.invoke(mWifiManager, mWifiConfig, enabled);
} catch(Exception e) {
e.printStackTrace();
return false;
}
}
这里传的参数ssid:wifi热点的名字;key:wifi热点的密码;security:加密方式有open和wpa2 psk这两种;enabled:表示设置WifiAp的开关
那么,如何关闭wifi热点呢?这就跟enabled的值有关了。如下
public boolean closeAp(){
try {
Method method = mWifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class,boolean.class);
return (Boolean) method.invoke(mWifiManager, null, false);
} catch(Exception e) {
e.printStackTrace();
return false;
}
}
设置之后怎样查看wifi热点的状态呢?这里也要通过一个WifiManager的隐藏方式来获取,这个方法是getWifiApState()
//得到wifi热点当前的状态
//WIFI_AP_STATE_DISABLING = 0;
//WIFI_AP_STATE_DISABLED = 1;
//WIFI_AP_STATE_ENABLING = 2;
//WIFI_AP_STATE_ENABLED = 3;
//WIFI_AP_STATE_FAILED = 4;
public int getWifiApState() {
try {
Method method = mWifiManager.getClass().getMethod("getWifiApState");
return (Integer) method.invoke(mWifiManager);
} catch(Exception e) {
e.printStackTrace();
return WIFI_AP_STATE_FAILED;
}
}
好,到这里主要的功能需要的代码就差不多了。剩下的就是界面和存储信息的事情,应该还好。
wifi热点是将机顶盒的有线网络通过wifi来共享出来,就是将机顶盒虚拟成一个无线路由器,所以在建立wifi热点时机顶盒上的wifi状态是要关闭的,在开启热点之前要判断当前的有线连接是否是有效的,判断是否是connected。代码如下
// 判断当前是否联网,如果联网了。判断是不是eth
public boolean isAvailableEth() {
ConnectivityManager mConnManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo mInfo = mConnManager.getActiveNetworkInfo();
if (mInfo != null) {
if (mInfo.isAvailable() && mInfo.isConnected() && !mInfo.getTypeName().equals("WIFI")) {
return true;
}
return false;
}
return false;
}
有关网络连接状态与connected和available的值的变化如下:
1,显示连接已保存,但标题栏没有,即没有实质连接上,输出为:not connect, available
2,显示连接已保存,标题栏也有已连接上的图标, 输出为:connect, available
3,选择不保存后 输出为:not connect, available
4,选择连接,在正在获取IP地址时 输出为:not connect, not available
5,连接上后 输出为:connect, available
public boolean setWifiApEnabled(String ssid ,String key ,String security, boolean enabled) {
mWifiConfig.SSID = ssid ;
if(security.equals("open")){
mWifiConfig.allowedKeyManagement.set(KeyMgmt.NONE);
}else{
mWifiConfig.allowedKeyManagement.set(KeyMgmt.WPA_PSK);
mWifiConfig.allowedAuthAlgorithms.set(AuthAlgorithm.OPEN);
mWifiConfig.preSharedKey = key ;
}
try {
if (enabled) { // disable WiFi in any case
mWifiManager.setWifiEnabled(false);
}
Method method = mWifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class,boolean.class);
return (Boolean) method.invoke(mWifiManager, mWifiConfig, enabled);
} catch(Exception e) {
e.printStackTrace();
return false;
}
}
这里传的参数ssid:wifi热点的名字;key:wifi热点的密码;security:加密方式有open和wpa2 psk这两种;enabled:表示设置WifiAp的开关
那么,如何关闭wifi热点呢?这就跟enabled的值有关了。如下
public boolean closeAp(){
try {
Method method = mWifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class,boolean.class);
return (Boolean) method.invoke(mWifiManager, null, false);
} catch(Exception e) {
e.printStackTrace();
return false;
}
}
设置之后怎样查看wifi热点的状态呢?这里也要通过一个WifiManager的隐藏方式来获取,这个方法是getWifiApState()
//得到wifi热点当前的状态
//WIFI_AP_STATE_DISABLING = 0;
//WIFI_AP_STATE_DISABLED = 1;
//WIFI_AP_STATE_ENABLING = 2;
//WIFI_AP_STATE_ENABLED = 3;
//WIFI_AP_STATE_FAILED = 4;
public int getWifiApState() {
try {
Method method = mWifiManager.getClass().getMethod("getWifiApState");
return (Integer) method.invoke(mWifiManager);
} catch(Exception e) {
e.printStackTrace();
return WIFI_AP_STATE_FAILED;
}
}
好,到这里主要的功能需要的代码就差不多了。剩下的就是界面和存储信息的事情,应该还好。
- Android_OTT的wifi热点建立
- Android_OTT的wifi热点建立
- windows下建立wifi热点的批处理
- Ubuntu 下建立WiFi热点的方法
- win7建立wifi热点
- Win7建立WIfi热点
- WIN7建立wifi热点
- 笔记本建立wifi热点
- ubuntu建立WiFi热点
- 建立wifi热点
- 笔记本建立WIFI热点
- 笔记本建立wifi热点
- Raspberry建立Wifi热点
- win7建立wifi热点
- 笔记本建立wifi热点
- Mac mini 建立wifi热点
- Win7系统建立Wifi热点
- win7/8 建立wifi热点
- 在UltraEdit中使用正则表达式
- ios Parse推送详解
- chm文档的生成
- DBMS_STATS.GATHER_SCHEMA_STATS介绍使用
- huffmanTree build and huffman Coding
- Android_OTT的wifi热点建立
- 【推荐】关于JS中的constructor与prototype【转】
- 【转载】View的setOnClickListener的添加方法
- 大数据时代创业难:盘点未来十大初创企业
- web service测试
- df:查看linux剩余空间大小
- Gaea源码阅读(五):C客户端
- Web Service测试工具小汇
- 笑林院每日笑话排行榜 2013-07-04 笑林院—8小时内最有趣最搞笑的事