wifiLock和激活锁定不能在Android上正常工作

问题描述 投票:1回答:3

我正在开发一个需要同时使用wifiLock和激活锁定,因此音频流时,屏幕关闭没有得到不安的应用程序。我已经试过我的应用程序在Android 2.3和激活锁定,看起来像wifiLock按预期方式工作所以当屏幕开启或关闭时没有任何区别,但在Android 4.2(果冻豆)相同的应用程序时,屏幕熄灭不工作以及和音频变得波涛汹涌这表明无论是激活锁定或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();
}   
android wifi android-4.2-jelly-bean wakelock
3个回答
4
投票

我才刚刚偶然发现了这个问题 - 可能是几年为时已晚了OP,但以防万一它可以帮助别人,你可能需要使用的,而不是WIFI_MODE_FULL_HIGH_PERF WIFI_MODE_FULL,因为这可能会导致流问题:

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

我可能会看流在Service,而不是一个Activity过的音频,尤其是当你出现在后台运行的理念来设计它。


1
投票

这么晚了张贴的答案,但也许它可以帮助别人。正如我所面临的同样的问题,得到了解决方案:

        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();

并释放锁的破坏方法:

if (wakeLock != null) {
            if (wakeLock.isHeld()) {
                wakeLock.release();
            }
        }
        if (wifiLock != null) {
            if (wifiLock.isHeld()) {
                wifiLock.release();
            }
        }

我认为你的情况缺少的是你没有获取锁。看到这个link


0
投票

您正在收购活动的锁,当你的活动中去堆栈系统可以删除并摧毁你的活动,这可能是你的问题的原因。试图获得在服务锁。但是,部分锁定和WIFI的组合不会在某些设备上正常工作,以及看到了这个问题:Android WifiLock not working?

© www.soinside.com 2019 - 2024. All rights reserved.