package com.jiuqi.njt.receiver; import java.util.ArrayList; import com.jiuqi.njt.service.ServiceUtil; import com.jiuqi.njt.service.WeatherService; import android.app.ActivityManager; import android.app.Service; import android.app.ActivityManager.RunningServiceInfo; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.IBinder; public class ScreenService extends Service { // 开屏锁屏监听action private static final String SCEEN_ON = Intent.ACTION_SCREEN_ON; private static final String SCEEN_OFF = Intent.ACTION_SCREEN_OFF; // 监听的服务名 final String ServiceName = "com.jiuqi.njt.service.WeatherService"; @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { super.onCreate(); // 注册开屏锁屏事件监听 IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(SCEEN_ON); intentFilter.addAction(SCEEN_OFF); // 动态注册锁屏开屏广播 registerReceiver(ScreenBroadcast, intentFilter); } @Override public void onStart(Intent intent, int startId) { super.onStart(intent, startId); } /** * 广播接收器 */ private BroadcastReceiver ScreenBroadcast = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(SCEEN_ON)) { System.out.println("SCREEN---ON"); ShareMethod shareMethod = new ShareMethod(ScreenService.this); //检测错误日志、锁屏服务是否启动 shareMethod.checkService(); //启动连续上报 if(!isServiceRunning(ServiceName)){ startService(new Intent(ScreenService.this, WeatherService.class)); } if(ServiceUtil.checkRoleStartService(context)){ ServiceUtil.startLxsbService(context); } } else if (action.equals(SCEEN_OFF)) { System.out.println("SCREEN---OFF"); } } }; /** * 判断服务是否运行 * * @return */ public boolean isServiceRunning(String pac_act) { boolean flag = false; ActivityManager myManager = (ActivityManager) ScreenService.this .getSystemService(Context.ACTIVITY_SERVICE); ArrayList<RunningServiceInfo> runningService = (ArrayList<RunningServiceInfo>) myManager .getRunningServices(30); for (int i = 0; i < runningService.size(); i++) { //System.out.println("正在运行的服务:"+runningService.get(i).service.getClassName().toString()+"---"+pac_act); if (runningService.get(i).service.getClassName().toString() .equals(pac_act)) { flag = true; } } return flag; } @Override public void onDestroy() { // 删除广播 unregisterReceiver(ScreenBroadcast); super.onDestroy(); } }