Pytanie w sprawie android-alarms, alarmmanager, service, android – Android: Alarm będzie odtwarzany co 30 minut i rozpocznie się od 12:30

1

Tutaj zamierzam użyć usługi alarmowej, aby odtwarzać alarm co 30 minut. Teraz ustawiłem go na odtwarzanie co 10 sekund od początku.

Oto kod:

<code>@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.settings_layout);


    Intent myIntent = new Intent(SettingsActivity.this, MyAlarmService.class);
    pendingIntent = PendingIntent.getService(SettingsActivity.this, 0, myIntent, 0);

    AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);

    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());

    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 10*1000, pendingIntent);

}
</code>

Teraz problem polega na tym, że chcę uruchomić alarm od godziny 12:30, a nie od momentu rozpoczęcia aplikacji, i powinien on powtarzać się z każdą godziną 30 minut. jak 1:00, 1:30, 2:00. . . itp

Jakie zmiany muszę wprowadzić w swoim kodzie?

@imrankhan: hej, dzięki. Myślę, że to będzie działało. Ale po prostu zadaj pytanie. jeśli ustawiłem godzinę jako 12 i minutę jako 30 i jeśli zainstaluję aplikację w urządzeniu o 1:29, to czy będzie odtwarzany alarm o 1:30 ??? iDroid Explorer
@iDroidExplorer: zobacz ten post może być pomocnyUżywanie Alarmmanager do uruchomienia usługi o określonej godzinie ρяσѕρєя K
@imrankhan: Proszę usłyszeć odpowiedź, żeby ją zaakceptować. iDroid Explorer
Musisz utworzyć usługę, która będzie działać w tle aplikacji. Tak więc, jeśli wyjdziesz z zamykania aplikacji, usługa pozostanie uruchomiona i wykonasz kod zgodnie z twoją logiką. Suvam Roy

Twoja odpowiedź

5   odpowiedzi
1

Ustaw początkowy czas alarmu na 12:30 za pomocąUstaw metodę.

Po uruchomieniu alarmu ustaw następny czas alarmu i rób to tak długo, aż alarm nie będzie już potrzebny.

Nie potrzebujesz usługi, aby wykonać takie proste zadanie. AlarmManager jest bardziej niż zdolny do obsługi tego.

Dziękuję za odpowiedź. iDroid Explorer
0

Aby powtarzać co 30 minut, musisz dodać to do swojego kodu:

<code>alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000*60*30, pendingIntent); //millisecs*seconds*minutes
</code>

Ale nie wiem, jak zacząć o określonej godzinie.

1

Naiwnym podejściem byłoby:

Uruchom kontekst, który będzie zawsze uruchamiany, na przykład aWątek wUsługa.Oblicz znacznik czasu, w którym chcesz, aby następny alert dzwoniłData i umieść go w „długim alercie ostrzegawczym”.W pętli oblicz teraz znacznik czasuData i umieść to w „long nowTimestamp”.Jeśli terazTimestamp <alertTimestamp, umieść wątek wsen for (alertTimestamp - nowTimestamp).Inne dźwięki alarmowe i przeliczanie alertTimestamp, powtórz.

Upewnij się, że z wdziękiem przechwytujesz przerwy w bieżniku, co jest kluczem do przerwania timera.

Mam nadzieję, że to było pomocne.

Dziękuję za odpowiedź. iDroid Explorer
1

Spróbuj

I używaj po raz pierwszy -

Spróbuj innego

Dziękuję za odpowiedź. iDroid Explorer
2

Aby uruchomić usługę o określonej godzinie. zobacz ten post może być pomocny:

Używanie Alarmmanager do uruchomienia usługi o określonej godzinie

Dziękuję za odpowiedź. Działa tak, jak chcę. iDroid Explorer

Powiązane pytania