public class ScreenListenerService {
Context mContext;
ScreenBroadcastReceiver mScreenBroadcastReceiver;
ScreenStateListener mScreenStateListener;
public ScreenListenerService(Context context) {
mContext = context;
mScreenBroadcastReceiver = new ScreenBroadcastReceiver();
}
private class ScreenBroadcastReceiver extends BroadcastReceiver {
String action = null;
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
action = intent.getAction();
if (Intent.ACTION_SCREEN_ON.equals(action)) {
mScreenStateListener.OnScreenOn();
} else if (Intent.ACTION_SCREEN_OFF.equals(action)) {
mScreenStateListener.OnScreenOff();
} else if (Intent.ACTION_USER_PRESENT.equals(action)) { // 解锁
mScreenStateListener.OnUserPresent();
}
}
}
public void begin(ScreenStateListener listener) {
mScreenStateListener = listener;
getScreenState();
registerListener();
}
@SuppressLint("NewApi")
private void getScreenState() {
PowerManager manager = (PowerManager) mContext
.getSystemService(Context.POWER_SERVICE);
if (manager.isScreenOn()) {
if (null != mScreenStateListener) {
mScreenStateListener.OnScreenOn();
}
} else {
if (null != mScreenStateListener) {
mScreenStateListener.OnScreenOff();
}
}
}
private void registerListener(){
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_USER_PRESENT);
mContext.registerReceiver(mScreenBroadcastReceiver, filter);
}
public void unregisterListener(){
mContext.unregisterReceiver(mScreenBroadcastReceiver);
}
public interface ScreenStateListener {
public void OnScreenOn();
public void OnScreenOff();
public void OnUserPresent();
}
// public static String getCurrentActivityName(Context context){
// ActivityManager am = (ActivityManager) context.getSystemService(Activity.ACTIVITY_SERVICE);
// List<ActivityManager.RunningTaskInfo> task = am.getRunningTasks(1);
// ComponentName compInfo = task.get(0).topActivity;
//
// return compInfo.getClassName();
// }
}
public class HomeBroadcast {
Context mContext;
HomekeyListener mHomekeyListener;
HomeReceiver hr;
public static boolean isHome = false;
public HomeBroadcast(Context context) {
mContext = context;
hr = new HomeReceiver();
}
private class HomeReceiver extends BroadcastReceiver {
String SYSTEM_REASON = "reason";
String SYSTEM_HOME_KEY = "homekey";
String SYSTEM_HOME_KEY_LONG = "recentapps";
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {
String reason = intent.getStringExtra(SYSTEM_REASON);
if (TextUtils.equals(reason, SYSTEM_HOME_KEY)) {
HomePage.songPause();
mHomekeyListener.onHomekeyDownListener();
}
}
}
}
public void begin(HomekeyListener listener) {
mHomekeyListener = listener;
mContext.registerReceiver(hr, new IntentFilter(
Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
}
public void unregister() {
mContext.unregisterReceiver(hr);
}
public interface HomekeyListener {
public void onHomekeyDownListener();
}
}
记录一下。方便以后用