您的位置:首页 > 移动开发 > Android开发

android 监听手机屏幕唤醒和睡眠广播

2013-07-19 11:18 585 查看
最近做APP要做一个android 手机屏幕唤醒和睡眠的监听。

但发现下面问题:

我想获取调用屏幕打开时应用。在我 AndroidManifest.xml 已经指定:android.intent.action.SCREEN_ON 作为接收器的意图过滤器不起作用

<receiver android:name="IntentReceiver">
<intent-filter>
<action android:name="android.intent.action.SCREEN_ON"></action>
</intent-filter>
</receiver>


解决方法:

需要动态注册:

// 屏幕状态广播
ScreenStatusReceiver screenStatusReceiver;
// 屏幕状态广播初始化
screenStatusReceiver = new ScreenStatusReceiver();
IntentFilter screenStatusIF = new IntentFilter();
screenStatusIF.addAction(Intent.ACTION_SCREEN_ON);
screenStatusIF.addAction(Intent.ACTION_SCREEN_OFF);
// 注册
registerReceiver(screenStatusReceiver, screenStatusIF);


ScreenStatusReceiverScreenStatusReceiverScreenStatusReceiver类

/**
* 屏幕状态广播
* @author yuegy
*
*/
class ScreenStatusReceiver extends BroadcastReceiver {
String SCREEN_ON = "android.intent.action.SCREEN_ON";
String SCREEN_OFF = "android.intent.action.SCREEN_OFF";

@Override
public void onReceive(Context context, Intent intent) {
// 屏幕唤醒
if(SCREEN_ON.equals(intent.getAction())){
Log.e(TAG, SCREEN_ON);
}
// 屏幕休眠
else if(SCREEN_OFF.equals(intent.getAction())){
Log.e(TAG, SCREEN_OFF);
}
}
}

 

最后不要忘了取消注册:

unregisterReceiver(screenStatusReceiver);


 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android 唤醒和睡眠