广播的基本使用 锁屏 解锁
public class ScreenBroadcastReceiver extends BroadcastReceiver {
private String action = null;
@Override
public void onReceive(Context context, Intent intent) {
action = intent.getAction();
if(intent.ACTION_SCREEN_ON.equals(action)){
Log.d(TAG, "-------------:" +"亮屏");
}else if (Intent.ACTION_SCREEN_OFF.equals(action)){ //锁屏操作
Log.d(TAG, "-------------:" +"锁屏操作");
}else if (Intent.ACTION_USER_PRESENT.equals(action)) { //解锁操作
Log.d(TAG, "-------------:" +"解锁操作");
}
}
}
在需要使用的地方比如说 MainActivity
添加广播
IntentFilter filter = new IntentFilter();
// 屏幕灭屏广播
filter.addAction(Intent.ACTION_SCREEN_OFF);
// 屏幕亮屏广播
filter.addAction(Intent.ACTION_SCREEN_ON);
// 屏幕解锁广播
filter.addAction(Intent.ACTION_USER_PRESENT);
//取到上面广播类的实例
ScreenBroadcastReceiver screenBroadcastReceiver = new ScreenBroadcastReceiver();
//动态注册广播 (必须添加)
registerReceiver(screenBroadcastReceiver, filter);
// 屏幕灭屏广播
filter.addAction(Intent.ACTION_SCREEN_OFF);
// 屏幕亮屏广播
filter.addAction(Intent.ACTION_SCREEN_ON);
这两个广播能动态注册 (动态注册就在java代码中注册)
// 屏幕解锁广播
filter.addAction(Intent.ACTION_USER_PRESENT);
可以静态注册(静态注册:在AndroidManifest.xml 中注册)
<receiver android:name=".ScreenBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.USER_PRESENT"/>
</intent-filter>
</receiver>