2016-12-18 4 views
1

Я пытаюсь настроить будильник с AlarmManager, чтобы удалить файлы, сохраненные моим приложением в папке, начиная с самых старых и удаляя только определенную сумму за раз. Я читал this link, но в какой-то момент я смутился.Как запустить будильник, когда устройство загружается с помощью AlarmManager?

Шаг 2 под Начать Alarm При загрузке устройства:

public class SampleBootReceiver extends BroadcastReceiver { 
 

 
    @Override 
 
    public void onReceive(Context context, Intent intent) { 
 
     if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) { 
 
      // Set the alarm here. 
 
     } 
 
    } 
 
}

Теперь код говорит //Set the alarm here.

Вот где я запуталась. Какие части я могу изменить, чтобы соответствовать моей конкретной ситуации?

Кроме того, я застрял на том, где разместить этот код в своем приложении. Я почти уверен, что это будет в моем AndroidManifest, но под разделом <application или под его собственной категорией или что?

Скриншоты были бы очень полезными. Спасибо. Я использую Android Studio 2.2.2, а мое приложение для Android 4.4.

+0

Где он говорит '// Установите будильник здесь. ', Где код идет, который вы хотите запускать каждый раз при загрузке телефона. Итак, вы хотите запустить там будильник, чтобы периодически запускать и выполнять свою задачу с заданным интервалом? –

+0

О, я действительно задумался над этим. Да, я хочу запустить там будильник для периодического запуска и выполнения вашей задачи с заданным интервалом. – Rosa1995

+0

Хорошо, я уточню с ответом –

ответ

1

В вашем случае класс SampleBootReceiver, который распространяется BroadcastReceiver, находится в отдельном файле класса. Он будет работать независимо от кода в методе onReceive() всякий раз, когда телефон загрузится, пока у вас также есть фильтр намерений в манифесте, например:

<receiver 
     android:name=".SampleBootReceiver" 
     android:enabled="true" 
     android:exported="true"> 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      </intent-filter> 
</receiver> 

Вы тогда хотите начать свой AlarmManager. Вы можете сделать это в своем onReceive() методе BroadcastReceiver или в отдельной службе, которая запускается с BroadcastReceiver.

Для запуска будильника:

// Make the intent to fire NewReciever 
     Intent intent= new Intent(getApplicationContext(), NewReceiver.class); 

     // Make PendingIntent to be triggered each time the alarm goes off 
     final PendingIntent pIntent = PendingIntent.getBroadcast(this, 0, 
       intentDayAlarmStart, 0); 

     //setup calendar object for alarm start time 
     Calendar cal= Calendar.getInstance(); 
     cal.setTimeInMillis(System.currentTimeMillis()); 

     cal.set(Calendar.HOUR_OF_DAY, hourToStart); 
     cal.set(Calendar.MINUTE, minuteToStart); 
     cal.set(Calendar.SECOND, 0); 

     //make the alarm 
     AlarmManager morningAlarm = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE); 

     //(type, starttime, interval, pintent) 
     morningAlarm.setInexactRepeating(AlarmManager.RTC_WAKEUP, dailyCalendar.getTimeInMillis(), 
       AlarmManager.INTERVAL_FIFTEEN_MINUTES, pIntent); 

Этот сигнал будет сделать еще один BroadcastReceiver, NewReceiver, огонь с интервалом в 15 минут, начиная с независимо от времени hourToStart и minuteToStart устанавливаются. Просто установите этот новый приемник в свой манифест!

+0

Извините, но я недавно оправился от опухоли головного мозга, и я тоже начал изучать все это, поэтому я очень смущен. Возможно, у вас есть скриншоты о том, как разместить весь этот код в моем приложении в студии Android? О, и спасибо за ответ. :) – Rosa1995

+0

Если вы можете получить свой проект на GitHub, я могу потянуть его и зафиксировать изменения, и я прокомментирую все, что я делаю, чтобы вы могли понять! –

+0

У меня буквально нет ничего, кроме стандартного кода запуска Android Studio, и я понятия не имею, как использовать GitHub, но я начал [это] (https://github.com/ReiSixx9/AndroidMonitor.git). – Rosa1995

Смежные вопросы