#android #android-activity #broadcastreceiver #alarmmanager
Вопрос:
У меня есть диспетчер аварийных сигналов, с помощью которого я устанавливаю время для запуска, предоставляя широковещательный приемник, onReceive
метод успешных вызовов широковещательного приемника, но есть идеи, как запустить приложение, onReceive
если приложение не запущено на переднем плане?
Менифест
<receiver
android:exported="true"
android:name=".AlarmReceiver" />
Приемник вещания
@Override
public void onReceive(Context context, Intent intent)
{
Intent scheduledIntent = new Intent(context, MainActivity.class);
scheduledIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(scheduledIntent);
}
Основная деятельность
AlarmManager alarmManager=(AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent=new Intent(this,AlarmReceiver.class);
PendingIntent pendingIntent=PendingIntent.getBroadcast(this,1000,intent,0);
alarmManager.set(AlarmManager.RTC_WAKEUP,timeInMillis,pendingIntent);
Пожалуйста, помогите
Спасибо
Комментарии:
1. Вы не можете запустить действие в фоновом режиме в современных версиях Android. Пожалуйста, используйте
Notification
вместо этого приоритет.2. Спасибо @CommonsWare за быстрый ответ, что вы предлагаете использовать, если я хочу автоматически воспроизводить запланированный музыкальный поток? Во-вторых , как вы предложили использовать уведомление с высоким приоритетом , будет ли это локальное уведомление или push-уведомление, и могу ли я запустить действие a из push-уведомления? Спасибо
3. «что вы предлагаете использовать, если я хочу автоматически воспроизводить запланированный музыкальный поток?» — если бы это было что-то похожее на мелодию звонка, вы, возможно, могли бы привязать ее непосредственно к
Notification
. Если это что-то более длинное, попроситеNotification
предоставить пользовательский интерфейс для переднегоService
плана, который воспроизводит поток. «будет ли это локальное уведомление или push-уведомление» —Notification
на Android относится к тому, что, я полагаю, вы подразумеваете под»локальным уведомлением». «могу ли я запустить действие a из push-уведомления?» — нет.4. По сути , это музыкальный поток радио с использованием exoplayer , нам нужно, чтобы пользователь установил время, в которое он хочет, чтобы он воспроизводился, и когда это время наступит, поток начнет воспроизводиться автоматически . У меня на уме две вещи: либо фоновое, либо переднее обслуживание.
Ответ №1:
По сути , это музыкальный поток радио с использованием exoplayer , нам нужно, чтобы пользователь установил время, в которое он хочет, чтобы он воспроизводился, и когда это время наступит, поток начнет воспроизводиться автоматически .
Фоновая служба будет работать только в течение одной минуты на Android 8.0 . Для музыкального проигрывателя вам понадобится служба переднего плана, в которой связанный Notification
с ней пользователь управляет воспроизведением (например, пауза, возобновление, остановка).
Комментарии:
1. Спасибо, мне понадобится немного больше помощи, мое требование-показать уведомление о способе приема широковещательной передачи, и это уведомление может транслировать музыкальный поток. Метод музыкального потока записывается в основном действии , но когда в это время вызывается приемник onReceive широковещательной передачи, ни один метод основного действия не вызывается, потому что он не находится на переднем плане. Нужна помощь, спасибо
2. @AliAkram: «Метод музыкального потока записан в основной деятельности» — это не сработает. Вам нужно будет переместить логику музыкального потока в какой-то отдельный элемент, которым вы можете управлять из действия (когда оно рядом), из службы переднего плана (когда оно рядом) или, возможно, из трансляций
Notification
(когда оно рядом).
Ответ №2:
Во—первых, вы также должны использовать WorkManager, Brodcastreciver имеет ограничения для разных версий Android.