Как создать приложение для радио, не подверженное влиянию doze android?

Ссылка на эту библиотеку https://github.com/iammert/RadioPlayerService У меня есть этот код для воспроизведения/ пауза радио

   if (!mRadioManager.isPlaying())
                mRadioManager.startRadio(RADIO_URL[0]);
            else
                mRadioManager.stopRadio();

и метод выполнения процессов

 @Override
public void onRadioStarted() {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            //TODO Do UI works here.
            mTextViewControl.setText("RADIO STATE : PLAYING...");
        }
    });
}

@Override
public void onRadioStopped() {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            //TODO Do UI works here
            mTextViewControl.setText("RADIO STATE : STOPPED.");
        }
    });
}

Класс MyBroadcast

public class MyBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    Intent intent1 = new Intent(context, MainActivity.class);
    intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(intent1);
}

Но в Android 7, когда я выключаю экран через 5-8 минут, радио перестает играть музыку. Я сделал еще один пример, работая в фоновом режиме, и это все то же самое. Пожалуйста, может ли кто-нибудь предложить мне, как создать приложение для радио, не подверженное влиянию дремоты?


person Erald Haka    schedule 15.06.2017    source источник
comment
developer.android.com/reference/android/os/   -  person user1767754    schedule 15.06.2017
comment
@user1767754 user1767754 Удержание PARTIAL_WAKE_LOCK недостаточно для блокировки режима Doze   -  person Erald Haka    schedule 15.06.2017
comment
Если вашему приложению не хватит памяти, оно будет уничтожено, даже если у вас есть wakelock. Может быть, это происходит?   -  person user1767754    schedule 15.06.2017
comment
В моем примере мне нужно сделать долгий процесс, в андроиде 6 и ниже он работает отлично   -  person Erald Haka    schedule 15.06.2017


Ответы (2)


Для этого вам необходимо создать службу Foreground. Обычно, когда выполняется какой-либо длительный процесс (например, загрузка, воспроизведение музыки или видео и т. д.), он создает уведомление в строке состояния и на экране блокировки.

Примечание. Службу переднего плана следует использовать только для задач, которые пользователь ожидает от системы немедленно или без перерыва. К таким случаям относится загрузка фотографии в социальные сети или воспроизведение музыки, даже если приложение музыкального проигрывателя не находится на переднем плане. Вы не должны запускать службу переднего плана просто для того, чтобы система не определила, что ваше приложение находится в режиме ожидания.

https://developer.android.com/guide/components/services.html#Foreground

person shagi    schedule 15.06.2017
comment
Спасибо за ваш ответ и ваше предложение, я попытаюсь сделать пример для этого, пожалуйста, если вы можете предложить мне пример, это будет здорово, спасибо, чувак - person Erald Haka; 15.06.2017
comment
Как запустить службу переднего плана вы можете узнать по ссылке. Для управления музыкальной панелью я нашел это: sapandiwakar.in/android-media-player- экран блокировки - person shagi; 15.06.2017
comment
Спасибо, я очень ценю это, вы спасли меня! - person Erald Haka; 15.06.2017

Ссылка ниже является обширным примером. Имейте в виду, что для этого требуется другой уровень разрешений. https://developer.android.com/training/scheduling/wakelock.html

person user1767754    schedule 15.06.2017
comment
Спасибо за ваш ответ и ваше предложение, но если я нажму кнопку, которая выключит экран, что произойдет? - person Erald Haka; 15.06.2017
comment
согласно документации в режиме Doze Система игнорирует блокировку пробуждения. developer.android.com/training/monitoring-device-state/ - person shagi; 15.06.2017