我正在使用应用来跟踪设备的位置并将其与设置值进行比较。例如:父母希望确保在星期一早上8点到3点之间他的孩子在学校。该应用程序应该留在孩子的手机上,不时检查它的位置,然后将它与学校在一定范围内的坐标进行比较。如果孩子的手机碰巧超出界限,手机会通过电子邮件,短信或其他任何方式向家长发送简单的通知(尚未对该部分进行编程)。
我的问题是app只有在它打开时才能完成它的工作。这非常明显且可以理解,但我希望它更像闹钟。 “最近的应用程序”菜单中不存在闹钟,因此您无法轻易将其杀死,但仍会按时启动并按预期工作。此外,我不必在重新启动手机后重新打开闹钟,这可能也是我的应用程序的一个很好的补充。
我不希望它完全无法解决。只是有点困难,所以有孩子或有记忆问题的老人可以使用它而不会意外关闭。
这是我到目前为止所做的代码:
public class Alarm extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "");
wl.acquire();
//HERE WAS MY LOCATIONMANAGER MAGIC
wl.release();
}
public void setAlarm(Context context)
{
AlarmManager am =( AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, Alarm.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * 20, pi); // Millisec * Second * Minute
}
public void cancelAlarm(Context context)
{
Intent intent = new Intent(context, Alarm.class);
PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(sender);
}
}