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();
}
}