其他分享
首页 > 其他分享> > wifiLock和wakeLock在Android上无法正常工作

wifiLock和wakeLock在Android上无法正常工作

作者:互联网

我正在开发一个需要同时使用wifiLock和wakeLock的应用程序,因此屏幕关闭时的音频流不会受到干扰.
我在Android 2.3和wakeLock上尝试了我的应用程序,看起来像wifiLock正常工作,所以屏幕打开或关闭时没有区别,但屏幕熄灭时Android 4.2(Jelly-bean)上的相同应用程序不是同样工作,音频变得波动,显示wakeLock或wifiLock无法正常工作.这有什么理由吗?

以下是我获取和释放锁的方法,在我的主要活动中:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
    wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "MyWirelessHeadphone");

    WifiManager wm = (WifiManager) getSystemService(Context.WIFI_SERVICE);
    wifiLock = wm.createWifiLock(WifiManager.WIFI_MODE_FULL , "MyWifiLock");
    ...
}



@Override
protected void onDestroy() {
    super.onDestroy();
    if (wakeLock.isHeld()==true) 
        wakeLock.release();
    if (wifiLock.isHeld()==true) 
        wifiLock.release();
}   

解决方法:

我只是偶然发现了这个问题 – 可能对OP来说已经太晚了几年,但是为了防止其他人,你可能需要使用WIFI_MODE_FULL_HIGH_PERF而不是WIFI_MODE_FULL,因为这会导致流媒体问题:

wifiLock = wm.createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF , "MyWifiLock");

我可能会考虑在服务而不是活动中流式传输音频,尤其是因为您似乎正在设计它以在后台运行的想法.

标签:wakelock,android-4-2-jelly-bean,android,wifi
来源: https://codeday.me/bug/20191002/1843498.html