7

嗨,我正在制作一个警报应用程序。当警报时间到来时,我正在向用户显示一个对话框。但问题是我想在对话框出现时获取唤醒锁。就像收到短信时屏幕刚刚唤醒一样。

我试过这个但不工作

public class Alarm extends Activity{
    PowerManager pm;
    WakeLock wl;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        pm = (PowerManager) getSystemService(POWER_SERVICE);
        wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "FlashActivity");
wl.acquire()
        showAlarmDialog();
    }
    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        wl.release();
    }
}

我也添加了唤醒锁权限。帮助将被appriciated :-)

4

3 回答 3

4

我能够以这种方式打开屏幕:

wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG");
wl.acquire();

希望这有帮助。虽然它对我有用:-) 干杯

于 2013-04-19T06:34:32.270 回答
3

您可以通过两种方法获取唤醒锁

wl.acquire(); or wl.acquire(timeout)

在 onResume() 中尝试这样的事情:

PowerManager pm;
WakeLock wl;

pm = (PowerManager) getSystemService(POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "FlashActivity");
wl.acquire(); Or wl.acquire(timeout)

你正在 onPause() 中实现。那很好。

于 2013-04-19T06:12:34.737 回答
1

您可以在您的活动中添加一些标志,以便在您的活动开始时解锁和唤醒屏幕。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.my_activity);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
}
于 2017-01-21T15:56:33.340 回答