[英]Android WifiLock is not working correctly on Android
I'm trying to lock wifi after connected to an access point but device switch to another network after 2 to 3 minutes. 连接到接入点后,我试图锁定wifi,但是2到3分钟后设备切换到另一个网络。 Here is how I'm trying to do.
这就是我想要做的。
private static final String TAG = BuildConfig.APPLICATION_ID + ":WAKE_LOCK_TAG";
public MyWifiManager(){
mWifiLock = ((WifiManager) App.getContext().getApplicationContext().getSystemService(Context.WIFI_SERVICE)).createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF ,"MyWifiManager:mWifiLock");
PowerManager powerManager = (PowerManager) App.getContext().getSystemService(App.getContext().POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, TAG)
}
public void acquireWifiLock(){
if (mWifiLock != null && !mWifiLock.isHeld()){
mWifiLock.acquire();
}
}
public void releaseWifiLock() {
if( mWifiLock != null && mWifiLock.isHeld() ){
mWifiLock.release();
}
}
public void acquireWakeLock(){
if (wakeLock != null && !wakeLock.isHeld()){
wakeLock.acquire();
}
}
public void releaseWakeLock() {
if( wakeLock != null && wakeLock.isHeld() ){
wakeLock.release();
}
}
Here is my manifest file 这是我的清单文件
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE " />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
try this : 尝试这个 :
WifiManager wm = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
wifiLock = wm.createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF , "MyWifiLock");
wifiLock.acquire();
PowerManager pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
wakeLock.acquire();
And release the locks in onDestroy
method: 并释放
onDestroy
方法中的锁:
if (wakeLock != null) {
if (wakeLock.isHeld()) {
wakeLock.release();
}
}
if (wifiLock != null) {
if (wifiLock.isHeld()) {
wifiLock.release();
}
}
WifiLock has a different purpose. WifiLock具有不同的用途。 It is used for keeping the Wi-Fi radio on and is not meant for locking to a particular network.
它用于使Wi-Fi无线电保持开启状态,而不是用于锁定特定网络。
Ref: https://developer.android.com/reference/android/net/wifi/WifiManager.WifiLock 参考: https : //developer.android.com/reference/android/net/wifi/WifiManager.WifiLock
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.