MediaPlayer 在睡眠模式几分钟后停止播放来自互联网的音乐
MediaPlayer stops playing music from the internet after few minutes in sleep-mode
我有 Android 应用程序可以播放来自 URL 的音乐,但是当我的手机进入睡眠模式时它会播放 5 分钟然后停止播放,如果我解锁我的设备它会继续播放。
我试过这个 Playing music in sleep/standby mode in 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 oreo 及以上,则不能使用 startService
。您必须使用 startForeground
或 startForegroundService
。看到这个 post 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));
}
看起来这是一个错误 START_STICKY does not work on Android KitKat .
我有 Android 应用程序可以播放来自 URL 的音乐,但是当我的手机进入睡眠模式时它会播放 5 分钟然后停止播放,如果我解锁我的设备它会继续播放。
我试过这个 Playing music in sleep/standby mode in 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 oreo 及以上,则不能使用 startService
。您必须使用 startForeground
或 startForegroundService
。看到这个 post 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));
}
看起来这是一个错误 START_STICKY does not work on Android KitKat .