воспроизводить мелодию каждые 5 минут, даже если приложение закрыто - PullRequest
1 голос
/ 19 апреля 2019

Я пытался показывать тост каждые 5 минут и проигрывать мелодию, но она не работает, ничего не происходит.

манифест:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

..

<receiver android:name=".AlarmReceiver"
            android:enabled="false">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"></action>
            </intent-filter>
        </receiver>

MainActivity:

alarmMgr = (AlarmManager)MainActivity.this.getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
        alarmIntent = PendingIntent.getBroadcast(MainActivity.this, 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,
// 5 minutes.
        alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
                1000 * 60 * 5, alarmIntent);

AlarmReceiver:

public class AlarmReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub

        Toast.makeText(context, "OnReceive alarm test", Toast.LENGTH_SHORT).show();
    }
}

есть идеи, если чего-то не хватает или что-то не так?

1 Ответ

2 голосов
/ 19 апреля 2019

setRepeating функционально не рекомендуется (начиная с API 19) в пользу setInexactRepeating, который имеет минимальный интервал 15 минут и может добавить дополнительную задержку при пакетной обработке нескольких сигналов тревоги.

Если вам нужен такой агрессивный сигнал тревоги, вам нужно использовать однократный setExact сигнал тревоги и переназначить следующий в onReceive.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...