【问题标题】:Trying to Poke my Android and Turn on the Screen Programmatically试图戳我的 Android 并以编程方式打开屏幕
【发布时间】:2015-01-28 20:17:59
【问题描述】:

我正在为 Android 构建一个警报类应用程序。

我设置了某个计时器来运行,然后在我在 onCreate 方法中调用的某个时间间隔(用户按下按钮后)后触发。

final int interval = 20000; // 20 Second
Handler handler = new Handler();
Runnable runnable = new Runnable(){
      public void run() {
            Toast.makeText(getApplicationContext(), "Timer to Wake",Toast.LENGTH_SHORT).show();
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON|WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
      }
};

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

我还在 onCreate 方法中禁用了键盘:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD|
    WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);

在 Android 开发者文档中,它说:

窗口标志:当设置为窗口正在添加或可见时,一旦窗口显示,系统将电源管理器的用户活动(就好像用户已经唤醒了设备)打开屏幕。

现在,当我按下按钮触发计时器后,我会立即关闭屏幕。等待 20 秒后,屏幕没有被戳,设备也没有唤醒。这里可能是什么问题?当我在等待 20 秒后使用电源按钮打开屏幕时,我确实发现键盘已禁用。当我打开屏幕时,屏幕也永远处于唤醒状态。所以我知道这些标志正在起作用。我只需要它在计时器触发时“唤醒”!

【问题讨论】:

    标签: java android eclipse oop timer


    【解决方案1】:

    你应该使用AlarmManagerPendingIntent

    AlarmManager am=(AlarmManager)getApplicationContext getSystemService(Context.ALARM_SERVICE);
    Intent i = new Intent(context, SampleActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
    am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),(9 * 1000), pendingIntent);
    

    【讨论】:

    • 嗯。我不认为我想要这个。我只是想知道如何用我现在有什么方法唤醒屏幕。
    【解决方案2】:

    事实证明,我必须将正确的方法正确分组到正确的区域。我之前已经将 FLAG_DISMISS_KEYGUARD 和 FLAG_TURN_SCREEN_ON 拆分在不同的区域。

    成功开启屏幕:

    public void run() {
        Toast.makeText(getApplicationContext(), "Timer to Wake", Toast.LENGTH_SHORT).show();
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-29
      相关资源
      最近更新 更多