【问题标题】:Android Wakelock not working when screen is off屏幕关闭时Android唤醒锁不起作用
【发布时间】:2012-11-29 08:57:41
【问题描述】:

我正在尝试为服务实现唤醒锁和 wifi 锁。更多关于我的场景的信息,例如:Wakelock implementation in a service。我在启动期间获取并在服务被破坏时释放。我想监控我的项目的电池消耗,虽然我知道,这种方法不好。但是当我的手机屏幕关闭时,它无法正常工作。我已启用选项:在睡眠期间保持 Wifi 开启。一旦我的屏幕关闭,我的服务就会停止。我正在使用 sn-p :

PowerManager powerManager = (PowerManager)getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Lock");
if(!wakeLock.isHeld())
{
wakeLock.acquire();
}
Log.d(TAG,"Acquired Wake lock successfully");
wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
wifiLock = wifiManager.createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF , "WiFi LockTag");
if(!wifiLock.isHeld())
{
wifiLock.acquire();
}
Log.d(TAG,"Acquired Wifi lock successfully");  

//释放

try{
wifiLock.release(); 
}catch(Exception e){
e.printStackTrace();
Log.d(TAG,"Exception while releasing WakeLock :: Can be ignoredd");
}

知道为什么会这样吗?提前致谢!

【问题讨论】:

  • 我有一台设备可以进行一些 UPNP 网络活动。即使我持有部分唤醒锁定和 Wifi 锁定,当屏幕关闭时,UPNP 也不可靠。当屏幕打开时,UPNP 很好。某些设备可能不支持唤醒锁定?

标签: android service wakelock


【解决方案1】:

使用这个Spinet来保护屏幕不被锁定

public static void unlockTheScreen(Context context) {
    KeyguardManager keyguardManager = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE); 
    KeyguardLock keyguardLock =  keyguardManager.newKeyguardLock("TAG");
    keyguardLock.disableKeyguard();     
}

在您的唤醒锁中添加以下内容

  wakeLock = powermanager.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP ), "TAG");

【讨论】:

  • 您好,感谢您的回复。当我使用部分唤醒锁时,CPU 开启并且屏幕关闭。这比使用 full_wakelock 消耗的电量更少。不是吗? @乌斯曼库尔德
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多