android - 当应用程序提示用户时唤醒设备

标签 android wakelock wakeup

我正在使用处理程序重复提示用户输入,例如5分钟。当设备进入休眠模式并且屏幕被锁定时,如何在我的应用提示用户输入时唤醒设备?我试过这个但它似乎不起作用。我在 list 中添加了WAKE_LOCK权限。

class BtHandler extends Handler {
    private PowerManager pm;
    private WakeLock wl;

    @Override
    public void handleMessage(Message msg) {
        pm = (PowerManager)FixedNode.this.getSystemService(Context.POWER_SERVICE);
        if (!pm.isScreenOn()) {
            wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "TAG");
            wl.acquire();
        }
        FixedNode.this.setAlwaysDiscoverable();
        wl.release();
    }
}

有什么想法吗?

编辑:使用 AlarmManager 广播自定义 Intent 。

mReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
        v.vibrate(300);
        PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
        KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
        WakeLock wl = null;

        if (!pm.isScreenOn()) {
            KeyguardLock kl = km.newKeyguardLock("TAG");
            kl.disableKeyguard();
            wl = pm.newWakeLock(
                PowerManager.SCREEN_BRIGHT_WAKE_LOCK | 
                PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG");
            wl.acquire();
        }

        Toast.makeText(context, "Alarm worked", Toast.LENGTH_LONG).show();
        wl.release();
    }
};

mFilter = new IntentFilter(ACTION_NAME);

Intent mIntent = new Intent(ACTION_NAME);        
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, mIntent, 0);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (120 * 1000), pendingIntent);
Toast.makeText(this, "Alarm set", Toast.LENGTH_LONG).show();

最佳答案

通常 wakelock 不会实际打开屏幕。所以你应该用

获得唤醒锁

ACQUIRE_CAUSES_WAKEUP

作为附加标志。

关于android - 当应用程序提示用户时唤醒设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6445844/

相关文章:

ARM:启动/唤醒/唤醒其他 CPU 内核/AP 并传递执行起始地址?

vb.net - 如何将处于 sleep 模式的计算机唤醒? Vb 2008 Express 版

android - 有没有办法根据选定的 productFlavor 更改 gradle 变量值?

android - React Native Android 应用崩溃并出现 "E/AndroidRuntime: FATAL EXCEPTION: mqt_native_modules"

java - 使用 Toast 显示强制转换的 int 时应用程序崩溃

基于 Android 的 SMS 服务器和 WakeLock?

android - Android Wear处于 sleep 模式时如何唤醒?

android - 如何将 GestureDetector 附加到 ListPreference?

java - Android 电源管理器唤醒锁

java - 如何在本地局域网上找到 'shutdown' 系统的 MAC 地址(可能吗?)