我尝试使用 AsyncTask 在服务中获取当前 RSSI 的wifi连接。当屏幕关闭时,在我再次打开显示屏之前,不会更新该值。因此,该值与显示关闭前获得的最后一个值保持一致。
我使用了带有Android O预览的Nexus 6P和带有Android 6的LG 3。
我通过以下方式获得 WakeLock 和 WifiLock :
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "WifiMeasureTaskWakeLock");
mWakeLock.acquire();
mWifiLock = mWifiManager.createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF, "WifiMeasureTaskWifiLock");
mWifiLock.acquire();
在doInBackground方法中我执行以下操作:
@Override
protected Void doInBackground(final Void... params) {
int dBm;
try {
//some other code here
while (true) {
if (isCancelled()) {
//some other code here
return null;
}
try {
//some other code here
//does not update when the screen if turned off
dBm = Math.max(mWifiManager.getConnectionInfo().getRssi(), -100);
//some other code here
}
} catch (IOException e) {
//some other code here
}
}
} catch (SocketException e) {
//some other code here
}
return null;
}
我已经找到了issue in the issue tracker,但它已经过时了。
有人知道如何解决这个问题吗?