MediaPlayer прекращает воспроизведение музыки из Интернета через несколько минут в спящем режиме

1

У меня есть приложение для Android, которое воспроизводит музыку с URL-адреса, но когда мой телефон переходит в спящий режим, он воспроизводит 5 минут, а затем останавливает воспроизведение, если я разблокирую устройство, и оно продолжает играть.

Я пробовал это Воспроизведение музыки в режиме сна/ожидания в решении Android 2.3.3, но это не помогло.

Кроме того, я попытался использовать startForegroundService(), но он может быть использован только на Android 8 и выше. Но мои проекты минимальная версия Android 5.

MainActivity.java

public static Srting src = "http://clips.vorwaerts-gmbh.de/VfE_html5.mp4";
public void Play(View view){
        startService(new Intent(this, MyService.class));
        play.setEnabled(false);
    }

MyService.java

public class MyService extends Service {
    MediaPlayer ambientMediaPlayer;
    @Override
    public IBinder onBind(Intent intent) {

        throw new UnsupportedOperationException("Not yet implemented");
    }
    @Override
    public void onCreate(){
        ambientMediaPlayer = new MediaPlayer();
        ambientMediaPlayer.setLooping(true);
        ambientMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    }
    @Override
    public int onStartCommand(Intent intent, int flags, int startId){
        try {
            ambientMediaPlayer.setDataSource(MainActivity.src);
            ambientMediaPlayer.prepare();
            ambientMediaPlayer.start();
        }catch (IOException e){
            e.printStackTrace();
        }
        return START_STICKY;
    }
    @Override
    public void onDestroy() {
        ambientMediaPlayer.stop();
    }
}
Теги:
android-studio
android-mediaplayer
sleep-mode

2 ответа

0

Похоже, что это ошибка START_STICKY не работает на Android KitKat.

  • 0
    Вы читали вопрос?
  • 0
    увидеть обновленный ответ?
Показать ещё 1 комментарий
0

Вы не можете использовать startService, если вы нацелены на Android и выше. Вы должны использовать startForeground или startForegroundService. Смотрите этот пост https://developer.android.com/distribute/best-practices/develop/target-sdk#prenougat. так что попробуйте ниже пример.

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
       startForegroundService(new Intent(this, MyService.class));
    } else {
        startService(new Intent(this, MyService.class));
    }
  • 0
    Спасибо! Но если кто-то запустит мое приложение в Android ниже, чем Oreo, у него будет такая же проблема?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню