gpt4 book ai didi

android - 唤醒设备的正确、不弃用的方法是什么?

转载 作者:IT老高 更新时间:2023-10-28 23:34:11 26 4
gpt4 key购买 nike

我的要求是:在 GCM 之后消息到达时,设备应唤醒以显示高优先级通知。设备应该打开屏幕

目前我正在使用 WakeLock为达到这个。 newWakeLock() 方法需要一个锁定级别和一个要传递的标志(作为第一个参数,按位或'd)。

我正在使用 PowerManager.ACQUIRE_CAUSES_WAKEUP 标志,因为它完全符合我的需要。但是,我对锁定级别有点沮丧。所以根据docs ,我有以下选择:

  • PARTIAL_WAKE_LOCK - 与 ACQUIRE_CAUSES_WAKEUP 不兼容/不会打开屏幕
  • SCREEN_DIM_WAKE_LOCK - 已弃用
  • SCREEN_BRIGHT_WAKE_LOCK - 已弃用
  • FULL_WAKE_LOCK - 已弃用

建议的 FLAG_KEEP_SCREEN_ON 在这种情况下完全没用。我最终只是取消了弃用警告:

@SuppressWarnings("deprecation")
PowerManager.WakeLock screenOn = ((PowerManager) c.getSystemService(Context.POWER_SERVICE)).newWakeLock(
PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, TAG);
screenOn.acquire();
mNotifyMgr.notify(mNotificationId, mBuilder.build());
screenOn.release();

问题:在所描述的情况下,是否有一种可靠的方法来唤醒设备?

编辑我不是要求解决方法来唤醒设备。我的问题是这是否可以使用不推荐使用的 API 从后台唤醒设备(没有正在运行的 Activity)

最佳答案

使用我从我的问题中得到的代码,然后完成 Activity ,应该让屏幕在用户正常的时间内保持打开状态。相信我,这是唯一的方法,在这个问题上度过了一个美好的一周之后。您始终可以使用 notitlebar 将 Activity 设置为透明,用户永远不会知道。

@Override
protected void onCreate(Bundle savedInstanceState) {
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON);
finish();
}

关于android - 唤醒设备的正确、不弃用的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30369476/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com