【问题标题】:Android: Which events do wakeup a deviceAndroid:哪些事件会唤醒设备
【发布时间】:2012-11-23 08:31:05
【问题描述】:

我写了一个android应用程序,现在出现了问题。

如果我的应用程序正在运行并且我关闭了我的设备,那么有时它会在大约 8 秒后唤醒,然后屏幕打开并再次显示我的应用程序。

我的问题是: 哪些事件或处理约束(如处理广播意图)会唤醒设备?

编辑:带有 RCT_WAKEUP 的警报会打开设备屏幕吗?

提前致谢!

【问题讨论】:

    标签: android events sleep wakeup


    【解决方案1】:

    AlarmManager 实际上不会为您打开屏幕。您可以改用唤醒锁。

    PowerManager.WakeLock wakelock;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        .........
    
        PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
        wakelock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
                    | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "AlarmReceiver");
        wakelock.acquire();       
    }
    

    当您完成活动后,请务必释放唤醒锁:

    @Override
    protected void onStop() {
        super.onStop();
        wakelock.release();
    }
    

    您还需要在清单文件中添加唤醒锁定权限:

    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    

    或者,如果您不想包含此额外权限,则可以在您的活动中使用以下代码,而不是使用唤醒锁:

    this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN |
                    WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
                    WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
                    WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
                    WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    

    【讨论】:

    • 您好,感谢您的回答。但我的问题不是如何唤醒设备以及如何保持屏幕开启,而是哪些事件会唤醒我的设备。我不想唤醒我的设备,它不是手机也不是平板电脑,而是自定义设备,它必须在一定时间内处于睡眠模式而不能自发开启。
    猜你喜欢
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    相关资源
    最近更新 更多