当应用进入后台(OREO)时,MediaPlayer音频播放停止

时间:2018-10-11 08:02:44

标签: android android-mediaplayer android-8.0-oreo android-background android-8.1-oreo

我有一个带有MediaPlayer实例数组的管理器类,它是用于在我的应用程序上播放音频的管理器。到目前为止,它在后台运行良好,并在设备被阻止时继续播放音频。

现在,从Oreo设备开始,音频播放停止。有没有一种简单的方法可以强制设备使正在播放音频的MediaPlayer实例保持活动状态?我的意思是一种简单的方法,无需使用服务,也无需在设备的通知栏上创建自定义栏,这是我现在在堆栈溢出中找到的选项。可能必须是更简单的方法。

这是到目前为止我用来播放音频的代码:

MediaPlayer mPlayer =  new MediaPlayer();
AssetFileDescriptor fileDescriptor = ApplicationContextProvider.getContext().getAssets().openFd(res.getUrl());
long start = fileDescriptor.getStartOffset();
long end = fileDescriptor.getLength();
mPlayer.setDataSource(fileDescriptor.getFileDescriptor(), start, end);
mPlayer.prepareAsync();
mPlayer.setOnPreparedListener(new OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
        mp.start();
    }
});
mPlayer.setLooping(loop);
fileDescriptor.close();

非常感谢您

1 个答案:

答案 0 :(得分:0)

使用前台Serive。有关为何该服务将不再起作用的详细信息,请观看

https://www.youtube.com/watch?v=Pumf_4yjTMc

它明确表示将停止后台服务。有关Foreground Services的教程,请观看:

https://www.youtube.com/watch?v=FbpD5RZtbCc

请记住,您还需要学习启动Oreo的通知渠道。这个家伙也介绍了这一点。

相关问题