0

我可以通过这种方式检测屏幕何时关闭:

IntentFilter intentFilter = new IntentFilter(Intent.ACTION_SCREEN_ON);
intentFilter.addAction(Intent.ACTION_SCREEN_OFF);
registerReceiver(new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            Toast.makeText(MainActivity.this, "Screen off", Toast.LENGTH_SHORT).show();
        } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
            Toast.makeText(MainActivity.this, "Screen on", Toast.LENGTH_SHORT).show();
        }
    }
}, intentFilter);

我需要做同样的事情,但是Toast必须在几秒钟后出现,我可以通过timePicker. 所以每次屏幕关闭时,如果我设置 10 秒,10 秒后我会敬酒。我该怎么做?我需要服务吗?手动我可以做这样的事情:

new Handler().postDelayed(new Runnable() {

        @Override
        public void run() {

             // here the code
        }
}, 30 * 1000);

但如果我可以用时间选择器设置秒数会更好。谢谢

4

1 回答 1

0

做一个计时器很好,但在关机屏幕上吐司......你明白它永远不会出现,对吧?

如果要应用延迟,请首选Executors.newSingleThreadScheduledExecutor() 而不是 Handler.postDelayed()

绝对应该工作。现在您希望用户输入延迟。

只需使用TimePicker 对话框,并在其回调中设置延迟。

于 2014-04-24T12:43:51.053 回答