【问题标题】:Wake the Android Screen after a timer fires定时器触发后唤醒 Android 屏幕
【发布时间】:2015-01-28 08:03:35
【问题描述】:

如何让计时器触发唤醒 Android 设备屏幕的方法?

我插入了这个:

final Window win = getWindow();
win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
          | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 
win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
          | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);

进入

@Override
protected void onCreate(Bundle savedInstanceState) {

方法。

此外,我在用户单击运行以下程序的按钮后制作了一个计时器:

final int interval = 3000; // 3 Seconds
Handler handler = new Handler();
Runnable runnable = new Runnable(){
      public void run() {
           Toast.makeText(getApplicationContext(), "Here", Toast.LENGTH_SHORT).show();


                }
            };
handler.postAtTime(runnable, System.currentTimeMillis()+interval);
handler.postDelayed(runnable, interval);

我希望能够在 3 秒间隔内单击我的 Android 设备的电源按钮使其进入睡眠状态,并在 run() 被触发后唤醒它。 怎么调用才能触发屏幕开启?

【问题讨论】:

    标签: java android eclipse oop timer


    【解决方案1】:

    尝试添加到 onCreate() :

            PowerManager pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
            WakeLock wakeLock = pm.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK |    PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "TAG");
            wakeLock.acquire();
    

    解除屏幕锁定:

            KeyguardManager keyguardManager = (KeyguardManager) getApplicationContext().getSystemService(Context.KEYGUARD_SERVICE); 
            KeyguardLock keyguardLock =  keyguardManager.newKeyguardLock("TAG");
            keyguardLock.disableKeyguard();
    

    添加到清单中:

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

    【讨论】:

    • 谢谢,在实现这个之后,我尝试运行一个计时器并释放屏幕锁定,它成功了!但是我要采取什么步骤来唤醒屏幕? (我在计时器触发前关闭屏幕)
    【解决方案2】:

    这个方法也能瞬间亮屏:

    PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
    PowerManager.WakeLock TempWakeLock = powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP, "TempWakeLock");
    TempWakeLock.acquire();
    TempWakeLock.release();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-29
      相关资源
      最近更新 更多