Created
September 13, 2017 02:25
-
-
Save 5ZSQ/b27ec058b075d816fe7b3f58a4ea7b5a to your computer and use it in GitHub Desktop.
Android - 监听屏幕工作
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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