WIFI ( IPhone 3.2.5.9 Wireless Coexistence)
1.打开和关闭AP
2.监听AP开关状态
3.获取AP信息
4.映射BAND到CHANNEL
5.已连接的设备
PS: 部分方法都是隐藏的,使用的时候都是报红提示
private WifiManager mWifiManager = null;
private ConnectivityManager mConnectivityManager = null;
public void initialize(Context context) {
Log.i(TAG, "initialize is called.");
mContext = context;
if (mContext != null) {
mWifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
mConnectivityManager = ((ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE));
}
}
/********************* WIFI *********************/
ConnectivityManager.OnStartTetheringCallback mOnStartTetheringCallback =
new ConnectivityManager.OnStartTetheringCallback() {
@Override
public void onTetheringFailed() {
super.onTetheringFailed();
Log.i(TAG, "OnStartTetheringCallback:onTetheringFailed.");
}
public void onTetheringStarted() {
super.onTetheringStarted();
Log.i(TAG, "OnStartTetheringCallback:onTetheringStarted.");
}
};
public void openWifiAp() {
Log.i(TAG, "openWifiAp is called.");
if (mConnectivityManager != null) {
mConnectivityManager.startTethering(ConnectivityManager.TETHERING_WIFI, true,
mOnStartTetheringCallback, new Handler(Looper.getMainLooper()));
}
}
public void closeWifiAp() {
Log.i(TAG, "closeWifiAp is called.");
if (mConnectivityManager != null) {
mConnectivityManager.stopTethering(ConnectivityManager.TETHERING_WIFI);
}
}
boolean isWifiApEnabled() {
Log.i(TAG, "isWifiApEnabled is called.");
boolean result = false;
if (mWifiManager != null) {
result = mWifiManager.isWifiApEnabled();
}
return result;
}
void registerWifiApStateDetecterBroadcast() {
Log.i(TAG, "registerWifiApStateDetecterBroadcast in.");
if (null == mContext) return;
IntentFilter wifiApStateFilter = new IntentFilter();
wifiApStateFilter.addAction(WifiManager.WIFI_AP_STATE_CHANGED_ACTION);
mContext.registerReceiver(mWifiApStateDetecter, wifiApStateFilter);
}
void unregisterWifiApStateDetecterBroadcast() {
Log.i(TAG, "unregisterWifiApStateDetecterBroadcast in.");
if (null == mContext) return;
mContext.unregisterReceiver(mWifiApStateDetecter);
mWifiApStateDetecter = null;
}
BroadcastReceiver mWifiApStateDetecter = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "mWifiApStateDetecter onReceive : " + intent.getAction());
String intentAction = intent.getAction();
if (intentAction.equals(WifiManager.WIFI_AP_STATE_CHANGED_ACTION)) {
int state = intent.getIntExtra("wifi_state", 0);
Log.i(TAG, "Wifi ap state:" + state);
switch (state) {
case WifiManager.WIFI_AP_STATE_DISABLING:
Log.i(TAG, "Wifi ap state: WIFI_AP_STATE_DISABLING.");
case WifiManager.WIFI_AP_STATE_DISABLED:
Log.i(TAG, "Wifi ap state: WIFI_AP_STATE_DISABLED.");
case WifiManager.WIFI_AP_STATE_ENABLING:
Log.i(TAG, "Wifi ap state: WIFI_AP_STATE_ENABLING.");
case WifiManager.WIFI_AP_STATE_ENABLED:
Log.i(TAG, "Wifi ap state: WIFI_AP_STATE_ENABLED.");
case WifiManager.WIFI_AP_STATE_FAILED:
Log.i(TAG, "Wifi ap state: WIFI_AP_STATE_FAILED.");
boolean enable = isWifiApEnabled();
default:
break;
}
}
}
};
String getWifiApSSID() {
Log.i(TAG, "getWifiApSSID is called.");
String ssid = null;
if (mWifiManager != null) {
final WifiConfiguration config = mWifiManager.getWifiApConfiguration();
if (config != null) {
ssid = config.SSID;
if (!TextUtils.isEmpty(ssid)) {
Log.i(TAG, "Wifi ap ssid:" + ssid);
}
}
}
return ssid;
}
String getWifiApPassphrase() {
Log.i(TAG, "getWifiApPassphrase is called.");
String passphrase = null;
if (mWifiManager != null) {
final WifiConfiguration config = mWifiManager.getWifiApConfiguration();
// 目前先只考虑WPA2_PSK和NONE的情况
if (config != null && !(config.getAuthType() == WifiConfiguration.KeyMgmt.NONE)) {
passphrase = config.preSharedKey;
if (!TextUtils.isEmpty(passphrase)) {
Log.i(TAG, "Wifi ap passphrase:" + passphrase);
}
}
}
return passphrase;
}
public static final int WIFI_AP_SECURITY_TYPE_NONE = 0;
public static final int WIFI_AP_SECURITY_TYPE_WEP = 1;
public static final int WIFI_AP_SECURITY_TYPE_WAP = 2;
int getWifiApSecurityType() {
Log.i(TAG, "getWifiApSecurityType is called.");
int securityType = WIFI_AP_SECURITY_TYPE_NONE;
if (mWifiManager != null) {
// 目前先只考虑WPA2_PSK和NONE的情况
final WifiConfiguration config = mWifiManager.getWifiApConfiguration();
if (config != null && !(config.getAuthType() == WifiConfiguration.KeyMgmt.NONE)) {
securityType = WIFI_AP_SECURITY_TYPE_WAP;
Log.i(TAG, "Wifi ap securityType:" + securityType);
}
}
return securityType;
}
String getWifiApChannel() {
Log.i(TAG, "getWifiApChannel is called.");
String channel = null;
if (mWifiManager != null) {
final WifiConfiguration config = mWifiManager.getWifiApConfiguration();
if (config != null) {
int c = config.apChannel;
channel = String.valueOf(c);
}
if (!TextUtils.isEmpty(channel)) {
Log.i(TAG, "Wifi ap channel:" + channel);
}
}
return channel;
}
int getWifiApBand() {
Log.i(TAG, "getWifiApBand is called.");
int band = WifiConfiguration.AP_BAND_2GHZ;
if (mWifiManager != null) {
final WifiConfiguration config = mWifiManager.getWifiApConfiguration();
if (config != null) {
band = config.apBand;
}
Log.i(TAG, "Wifi ap band:" + band);
}
return band;
}