package tv.pps.bi.receiver;
import tv.pps.bi.config.IntervalTimeConstance;
import tv.pps.bi.config.TagConstance;
import tv.pps.bi.utils.LogUtils;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
public class ScreenBroadcastReceiver extends BroadcastReceiver {
private AlarmReceiver mAlarmReceiver = new AlarmReceiver();
private boolean isRegisterReceiver = false;
SharedPreferences sp;
int killid;
public void onReceive(Context context, Intent intent) {
if (!IntervalTimeConstance.isSTART_SERVICE_SWITCH()) { // 如果开关为false则不启动服务
sp = context.getSharedPreferences("destroy", Context.MODE_PRIVATE);
killid = sp.getInt("beKilled", 0);
if(killid==1){
IntervalTimeConstance.setStartServiceSwitch(context,sp.getBoolean("switch", false));
LogUtils.e(TagConstance.TAG_SERVICE, "尝试开启监听服务onReceive() = "+"killid = "+killid+"--switch = "+sp.getBoolean("switch", true));
Editor edit = sp.edit();
edit.clear();
edit.commit();
}
if(!IntervalTimeConstance.isSTART_SERVICE_SWITCH()){
LogUtils.v(TagConstance.TAG_SERVICE, "-------------开关为false,不启动服务---------");
return;
}
}
LogUtils.v(TagConstance.TAG_SERVICE, "-------------开关为true,启动服务---------");
if (intent.getAction().equals("android.intent.action.USER_PRESENT")) {// android.intent.action.SCREEN_ON
LogUtils.v(TagConstance.TAG_SERVICE, "解锁状态下开始发送广播");
long triggerAtTime = System.currentTimeMillis();
AlarmManager am = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
Intent intent_receiver = new Intent("tv.pps.alarmReceiver");
PendingIntent sender = PendingIntent.getBroadcast(context, 0,
intent_receiver, PendingIntent.FLAG_CANCEL_CURRENT);
// int interval = 1*60*60*1000;//时间间隔1小时,将每隔1小时发送一次广播
am.setRepeating(AlarmManager.RTC_WAKEUP, triggerAtTime,
IntervalTimeConstance.START_LISTEN_SERVICE_TIME, sender);// 在指定的时刻发送广播,并不唤醒设备
} else if (intent.getAction().equals(
"android.intent,action.BOOT_COMPLETED")) {// 监听开机启动的广播 4.0
LogUtils.v(TagConstance.TAG_SERVICE, "是否能够监听到开机广播");
long triggerAtTime = System.currentTimeMillis();
AlarmManager am = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
Intent intent_receiver = new Intent("tv.pps.alarmReceiver");
PendingIntent sender = PendingIntent.getBroadcast(context, 0,
intent_receiver, PendingIntent.FLAG_CANCEL_CURRENT);
// int interval = 1*60*60*1000;//时间间隔1小时,将每隔1小时发送一次广播
// 第一个参数和第二个参数要一致
am.setRepeating(AlarmManager.RTC_WAKEUP, triggerAtTime,
IntervalTimeConstance.START_LISTEN_SERVICE_TIME, sender);// 在指定的时刻发送广播,并不唤醒设备
}else if(intent.getAction().equals("android.net.conn.CONNECTIVITY_CHANGE")){
LogUtils.v(TagConstance.TAG_SERVICE, "是否能够监听到网络变换");
long triggerAtTime = System.currentTimeMillis();
AlarmManager am = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
Intent intent_receiver = new Intent("tv.pps.alarmReceiver");
PendingIntent sender = PendingIntent.getBroadcast(context, 0,
intent_receiver, PendingIntent.FLAG_CANCEL_CURRENT);
// int interval = 1*60*60*1000;//时间间隔1小时,将每隔1小时发送一次广播
// 第一个参数和第二个参数要一致
am.setRepeating(AlarmManager.RTC_WAKEUP, triggerAtTime,
IntervalTimeConstance.START_LISTEN_SERVICE_TIME, sender);// 在指定的时刻发送广播,并不唤醒设备
}
// registerAlarmReceiver(context);
}
/**
* 注册广播
*
* @param mContext
*/
public void registerAlarmReceiver(Context mContext) {
if (!isRegisterReceiver) {
isRegisterReceiver = true;
IntentFilter filter = new IntentFilter();
filter.addAction("tv.pps.alarmReceiver");
filter.addAction("deliver");
mContext.registerReceiver(mAlarmReceiver, filter);
}
}
public void unRegisterAlarmReceiver(Context mContext) {
if (isRegisterReceiver) {
isRegisterReceiver = false;
mContext.unregisterReceiver(mAlarmReceiver);
}
}
}