如何在Android中注册睡眠事件?

我正在使用 Android 3.0,我需要在我的应用程序中知道设备何时进入睡眠状态/关闭屏幕.

如何注册此意图/事件,以便在发生这种情况时能够执行某些操作? broadcastReceiver中有任何动作可以通知吗?

解决方法

This页有一个关于你正在寻找什么的教程.

从该页面复制的代码(为了将其从仅链接的答案转换为直接有用的答案):

1)在您的应用程序中创建一个类来接收意图.例如,以下接收器独立并设置要在第2部分中使用的静态变量:

public class ScreenReceiver extends broadcastReceiver {
    public static boolean wasScreenOn = true;

    @Override
    public void onReceive(Context context,Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            // do whatever you need to do here
            wasScreenOn = false;
        } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
            // and do whatever you need to do here
            wasScreenOn = true;
        }
    }
}

2)修改您的活动以接收屏幕开/关事件.您的接收器将检查广播接收器中的静态变量,以了解您刚收到的意图的原因:

public class ExampleActivity extends Activity {
   @Override
    protected void onCreate() {
        // initialize receiver
        IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
        filter.addAction(Intent.ACTION_SCREEN_OFF);
        broadcastReceiver mReceiver = new ScreenReceiver();
        registerReceiver(mReceiver,filter);
        // your code
    }

    @Override
    protected void onPause() {
        // when the screen is about to turn off
        if (ScreenReceiver.wasScreenOn) {
            // this is the case when onPause() is called by the system due to a screen state change
            System.out.println("SCREEN TURNED OFF");
        } else {
            // this is when onPause() is called when the screen state has not changed
        }
        super.onPause();
    }

    @Override
    protected void onResume() {
        // only when screen turns on
        if (!ScreenReceiver.wasScreenOn) {
            // this is when onResume() is called due to a screen state change
            System.out.println("SCREEN TURNED ON");
        } else {
            // this is when onResume() is called when the screen state has not changed
        }
        super.onResume();
    }
}

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...