监听BroadcastReceiverandroid
监听用户解锁须要在AndroidManifest中注册权限bash
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
复制代码
public interface ScreenStatusListener {
void onScreenOn();
void onScreenOff();
void userPresent()
}
复制代码
实现三个方法:开屏、锁屏、解锁ide
public class ScreenStatusController {
private Context mContext;
private IntentFilter mScreenStatusFilter = null;
private ScreenStatusListener mScreenStatusListener = null;
public ScreenStatusController(Context context) {
mContext = context;
mScreenStatusFilter = new IntentFilter();
mScreenStatusFilter.addAction(Intent.ACTION_SCREEN_ON);
mScreenStatusFilter.addAction(Intent.ACTION_SCREEN_OFF);
mScreenStatusFilter.addAction(Intent.ACTION_USER_PRESENT);
}
private BroadcastReceiver mScreenStatusReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (Intent.ACTION_SCREEN_ON.equals(action)) { // 开屏
if (mScreenStatusListener != null) {
mScreenStatusListener.onScreenOn();
}
} else if (Intent.ACTION_SCREEN_OFF.equals(action)) { // 锁屏
if (mScreenStatusListener != null) {
mScreenStatusListener.onScreenOff();
}
} else if (Intent.ACTION_USER_PRESENT.equals(action)) { //解锁
if (mScreenStatusListener != null) {
mScreenStatusListener.userPresent();
}
}
}
};
//设置监听
public void setScreenStatusListener(ScreenStatusListener l) {
mScreenStatusListener = l;
}
//开始监听
public void startListen() {
if (mContext != null) {
mContext.registerReceiver(mScreenStatusReceiver, mScreenStatusFilter);
}
}
//结束监听
public void stopListen() {
if (mContext != null) {
mContext.unregisterReceiver(mScreenStatusReceiver);
}
}
}
复制代码
控制工具主要是实现了广播的注册和回收,并处理广播事件工具
public class VideoActivity extends Activity{
private ScreenStatusController mScreenStatusController = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
//TODO
mScreenStatusController = new ScreenStatusController(this);
mScreenStatusController.setScreenStatusListener(new ScreenStatusController.ScreenStatusListener() {
@Override
public void onScreenOn() {
}
@Override
public void onScreenOff() {
}
@Override
pubic void userPresent(){
}
});
mScreenStatusController.startListen();
}
@Override
protected void onDestroy() {
mScreenStatusController.stopListen();
super.onDestroy();
}
}
复制代码
在Video主要是实例化控制工具类,并设置监听,同时在onCreate和onDestroy中注册和销毁广播事件。ui
到此为止,开屏、锁屏、解锁的监听就实现完了。this