Skip to content

Instantly share code, notes, and snippets.

@5ZSQ
Created September 13, 2017 02:25
Show Gist options
  • Save 5ZSQ/b27ec058b075d816fe7b3f58a4ea7b5a to your computer and use it in GitHub Desktop.
Save 5ZSQ/b27ec058b075d816fe7b3f58a4ea7b5a to your computer and use it in GitHub Desktop.
Android - 监听屏幕工作
static class ScreenObserver {
private Context mContext;
private TrackingIO.ScreenObserver.ScreenBroadcastReceiver mScreenReceiver;
private TrackingIO.ScreenStateListener mScreenStateListener;
public ScreenObserver(Context context) {
this.mContext = context;
this.mScreenReceiver = new TrackingIO.ScreenObserver.ScreenBroadcastReceiver((TrackingIO.ScreenObserver.ScreenBroadcastReceiver)null);
}
public void requestScreenStateUpdate(TrackingIO.ScreenStateListener listener) {
this.mScreenStateListener = listener;
this.startScreenBroadcastReceiver();
}
public void stopScreenStateUpdate() {
this.mContext.unregisterReceiver(this.mScreenReceiver);
}
private void startScreenBroadcastReceiver() {
IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.SCREEN_ON");
filter.addAction("android.intent.action.SCREEN_OFF");
filter.addAction("android.intent.action.USER_PRESENT");
this.mContext.registerReceiver(this.mScreenReceiver, filter);
}
private class ScreenBroadcastReceiver extends BroadcastReceiver {
private String action;
private ScreenBroadcastReceiver() {
this.action = null;
}
public void onReceive(Context context, Intent intent) {
this.action = intent.getAction();
if("android.intent.action.SCREEN_ON".equals(this.action)) {
ScreenObserver.this.mScreenStateListener.onScreenOn();
} else if("android.intent.action.SCREEN_OFF".equals(this.action)) {
ScreenObserver.this.mScreenStateListener.onScreenOff();
} else if("android.intent.action.USER_PRESENT".equals(this.action)) {
ScreenObserver.this.mScreenStateListener.onScreenUnlock();
}
}
}
}
interface ScreenStateListener {
void onScreenOn();
void onScreenOff();
void onScreenUnlock();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment