package com.jqyd.shareInterface; import java.util.ArrayList; import com.jqyd.app.ShareMethod; import com.jqyd.manager.Login; 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; import android.util.Log; 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.jqyd.shareInterface.UpLocationService"; // 判断服务是否开启 boolean isStart = false; boolean isLogStart = false; public Intent serviceIntent; public Intent logServiceIntent; @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; } @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); serviceIntent = new Intent(ScreenService.this, UpLocationService.class); // 我要判断的服务名字 isStart = isServiceRunning(ServiceName); // 注册开屏锁屏事件监听 IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(SCEEN_ON); intentFilter.addAction(SCEEN_OFF); // 动态注册锁屏开屏广播 registerReceiver(ScreenBroadcast, intentFilter); } @Override public void onStart(Intent intent, int startId) { // TODO Auto-generated method stub super.onStart(intent, startId); } /** * 广播接收器 */ private BroadcastReceiver ScreenBroadcast = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub 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)){ shareMethod.recordLog("动态注册的广播启动连续上报"); startService(new Intent(ScreenService.this, UpPlanService.class)); startService(new Intent(ScreenService.this, UpLocationService.class)); } } 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(Integer.MAX_VALUE); 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; } } Log.e("xiao", " 解锁屏时候判断连续上报服务是否运行:"+flag); return flag; } @Override public void onDestroy() { // TODO Auto-generated method stub // 删除广播 unregisterReceiver(ScreenBroadcast); super.onDestroy(); } }