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

标签 android wifi android-4.2-jelly-bean wakelock

我正在开发一个需要同时使用 wifiLock 和 wakeLock 的应用程序,这样屏幕关闭时的音频流就不会受到干扰。 我已经在 Android 2.3 和 wakeLock 上尝试了我的应用程序,看起来 wifiLock 可以按预期工作,因此屏幕打开或关闭之间没有区别,但屏幕关闭时 Android 4.2(Jelly-bean)上的相同应用程序不是工作正常,音频变得不稳定,这表明 wakeLock 或 wifiLock 无法正常工作。这有什么原因吗?

以下是我获取和释放锁的方式,在我的主要 Activity 中:

@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");

我可能会考虑在 Service 而不是 Activity 中流式传输音频,尤其是当您设计它的想法似乎是在背景。

关于android - wifiLock 和 wakeLock 在 Android 上无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14911700/

相关文章:

ios - 我可以在 iOS 上查看不同的 WiFi SSID 及其 channel 吗?

android - fragment 创建后触发 ViewPager 监听器

android - Delphi 10 - 在 Android 上执行命令行并实时获取输出

java - 使用 Retrofit 2.0 和 Spring Server 下载文件

ios - 我如何知道 iOS 设备现在已连接到互联网?

java - Android 处理没有互联网连接的物联网设备

android - 用于模拟器的 Intel Jelly Bean 图像

android - 用于 Jelly Bean 4.2 的低功耗蓝牙 API

android - 如何更新 Google map 上的 Circle 对象?

android - 透明背景的白日梦