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