Android:如果屏幕变暗,如何获取信息?

Android:如果屏幕变暗,如何获取信息?,android,screen,Android,Screen,我想在LCD背光关闭(或变暗)时收到一条消息。您知道,在Android设置中,您可以定义屏幕超时。 例如,15秒后,屏幕进入暗淡模式。 我开发了一个应用程序,在主要活动上有很多按钮。如果显示器开始变暗,用户在触摸屏幕时,通常会点击一个按钮,并调用该按钮的OnClick方法。 这是我想要避免的。因此,当显示器开始进入变暗模式时,我希望收到一些信息。然后我将禁用所有按钮,当显示器离开昏暗模式时,我想启用按钮 通过注册广播接收器,我可以关闭ACTION_SCREEN_并打开ACTION_SCREEN_

我想在LCD背光关闭(或变暗)时收到一条消息。您知道,在Android设置中,您可以定义屏幕超时。 例如,15秒后,屏幕进入暗淡模式。 我开发了一个应用程序,在主要活动上有很多按钮。如果显示器开始变暗,用户在触摸屏幕时,通常会点击一个按钮,并调用该按钮的OnClick方法。 这是我想要避免的。因此,当显示器开始进入变暗模式时,我希望收到一些信息。然后我将禁用所有按钮,当显示器离开昏暗模式时,我想启用按钮

通过注册广播接收器,我可以关闭ACTION_SCREEN_并打开ACTION_SCREEN_消息。但当LCD进入变暗模式时,不会发送此消息。 如果还发现一条名为ACTION_DREAMING_STARTED的消息,但当LCD进入变暗模式时,我没有收到该消息

 IntentFilter myfilter = new IntentFilter(Intent.ACTION_SCREEN_ON);
    myfilter.addAction(Intent.ACTION_SCREEN_OFF);
    myfilter.addAction(Intent.ACTION_DREAMING_STARTED);
    myfilter.addAction(Intent.ACTION_DREAMING_STOPPED);
    BroadcastReceiver mReceiver = new ScreenReceiver();
    registerReceiver(mReceiver, myfilter);


你为什么要反对Android的方式?如果屏幕变暗,但用户在屏幕关闭前与之交互,Android会将其唤醒并接收用户的输入。即使你当时拒绝执行任何动作,屏幕还是会醒过来,是吧??无论如何,使用那些
意图
接收器
是正确的方向。使用此按钮,POS应用程序的收据将被打印。我不想总是呆在屏幕上(这也可能是一种方式)。但如果LCD变暗,在我开始使用设备之前,用户自然会按下它。如果他按了一个按钮,就会打印一张收据…这是我想要避免的…好的,谢谢你的澄清。恐怕这样的广播在Android中根本不存在:好的,非常感谢,最后一篇帖子可能会出现。。。
    public class ScreenReceiver extends BroadcastReceiver {

    // thanks Jason
    public  boolean wasScreenOn = true;

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

        } else if (intent.getAction().equals(Intent.ACTION_DREAMING_STOPPED)) {
            // and do whatever you need to do here
            wasScreenOn = true;
            Log.i(TAG, "ACTION_DREAMING_STOPPED");
        }
    }

}