80,352
社区成员
发帖
与我相关
我的任务
分享
AlarmUtil.startBroadcast(this, 1000*60*10, ConnectionReceiver.class, CommonFinal.CheckConnectionAction);
public class ConnectionReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//获取设备锁
WakeLockUtil.acquireWakeLock(context);
if (CommonFinal.CheckConnectionAction.equals(intent.getAction())) {
//在此方法内部判断是否需要释放设备锁。
SocketListener.getInstance().checkConnection();
//写入数据库日志。
new BroadcastLogDal(context).insert("接收到广播了!");
}
else if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
SocketListener.getInstance().checkConnection();
}
}
}
public class AlarmUtil {
// 开启定时服务
public static void startBroadcast(Context context, int seconds, Class<?> cls, String action) {
// 获取AlarmManager系统服务
AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, cls);
intent.setAction(action);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
manager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), seconds, pendingIntent);
}
// 停止定时服务
public static void stopBroadcast(Context context, Class<?> cls, String action) {
AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, cls);
intent.setAction(action);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
// 取消
manager.cancel(pendingIntent);
}
}
public class WakeLockUtil {
private static WakeLock wakeLock = null;
//获取电源锁,保持该服务在屏幕熄灭时仍然获取CPU时,保持运行
public static void acquireWakeLock(Context context)
{
if (null == wakeLock)
{
PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK|PowerManager.ON_AFTER_RELEASE, "HEMSService");
if (null != wakeLock)
{
wakeLock.acquire();
}
}
}
//释放设备电源锁
public static void releaseWakeLock()
{
if (null != wakeLock)
{
wakeLock.release();
wakeLock = null;
}
}
}
static void scheduleAlarms(Context ctxt) {
AlarmManager mgr = (AlarmManager) ctxt.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent("keeplive");
PendingIntent pi = PendingIntent.getBroadcast(ctxt, 0, i, 0);
mgr.cancel(pi);
mgr.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + PERIOD, pi);
}
PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "");
wakeLock.acquire();
KeyguardManager km= (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
//这里参数”unLock”作为调试时LogCat中的Tag
KeyguardManager.KeyguardLock kl = km.newKeyguardLock("unLock");
kl.disableKeyguard(); //解锁