Я слежу за документацией разработчиков Android и некоторыми другими трюками, чтобы создать диспетчер аварийных сигналов, который запускает и будит процессор в 16:00 каждый день, следующий мой код:
private AlarmManager alarmMgr;
private PendingIntent alarmIntent;
BroadcastReceiver br;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
alarmMgr = (AlarmManager)getApplicationContext().getSystemService(Context.ALARM_SERVICE);
// Set the alarm to start at approximately 2:00 p.m.
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 16);
alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, alarmIntent);
}
public void setup() {
br = new BroadcastReceiver() {
@Override
public void onReceive(Context c, Intent i) {
Toast.makeText(c, "Rise and Shine!", Toast.LENGTH_LONG).show();
//Invoke the service here Put the wake lock and initiate bind service
}
};
registerReceiver(br, new IntentFilter("com.testrtc") );
alarmIntent = PendingIntent.getBroadcast( this, 0, new Intent("com.testrtc"),
0 );
alarmMgr = (AlarmManager)(this.getSystemService( Context.ALARM_SERVICE ));
}
}
Манифест:
<uses-permission android:name="android.permission.WAKE_LOCK" />
Однако я не получаю никаких ошибок, но сигнал тревоги (тостовое сообщение) не срабатывает.
ИЗМЕНИТЬ из документации для разработчиков:
Примеры RTC
Вот несколько примеров использования RTC_WAKEUP.
Разбудите устройство, чтобы сработал сигнал будильника, примерно в 14:00, и повторяйте это один раз в день в одно и то же время:
// Set the alarm to start at approximately 2:00 p.m.
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 14);
// With setInexactRepeating(), you have to use one of the AlarmManager interval
// constants--in this case, AlarmManager.INTERVAL_DAY.
alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, alarmIntent);
Этот для установки Повторение говорит, что если я хочу, чтобы мой будильник срабатывал в 8:30, а затем повторялся через каждые 20 минут, однако я просто хочу активировать свой будильник в определенное время, но я не хочу его повторять.
Выведите устройство из режима сна ровно в 8:30 утра, а затем каждые 20 минут:
private AlarmManager alarmMgr;
private PendingIntent alarmIntent;
...
alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmReceiver.class);
alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
// Set the alarm to start at 8:30 a.m.
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 8);
calendar.set(Calendar.MINUTE, 30);
// setRepeating() lets you specify a precise custom interval--in this case,
// 20 minutes.
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
1000 * 60 * 20, alarmIntent);
setInexactRepeating
? просто используйтеsetRepeating
, и все готово. просто. - person Mehul Joisar   schedule 20.01.2014setInexactRepeating
. - person Mehul Joisar   schedule 20.01.2014