检测屏幕是否已关闭或内部服务

时间:2014-01-13 19:11:32

标签: android

我正在开发一个应用程序,我需要在屏幕关闭时暂停活动,当屏幕打开时,必须恢复它。

我希望在服务中完成检测。我使用startservice()来启动我的服务。但不知道在哪里放下以下代码:

pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
if (pm.isScreenOn())
    MyActivity.onResume();
else
    MyActivity.onPause();

我试着用Google搜索,但我找不到它。

1 个答案:

答案 0 :(得分:3)

使用BroadcastReceiver。在服务中声明它:

private final BroadcastReceiver myReceiver = new myReceiver();

在您的服务onCreate:

    final IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
    filter.addAction(Intent.ACTION_SCREEN_OFF);
    registerReceiver(myReceiver, filter);

在你的服务onDestroy中:

    unregisterReceiver(myReceiver);

创建接收器:

public class myReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            //Do something when the screen goes off
        } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
            //Do something when it's back on
        }
    }

无论如何,请记住默认情况下的活动会在屏幕熄灭时显示onPause并返回onResume