У меня есть приложение для 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();
}
}
Похоже, что это ошибка START_STICKY не работает на Android KitKat.
Вы не можете использовать 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));
}