Ionic / Android 8+:锁定屏幕后约5分钟,音频将停止播放

时间:2018-08-18 17:09:55

标签: android ionic-framework audio background android-8.0-oreo

我的应用程序使用 cordova-plugin-media 插件播放音乐。 cordova-plugin-background-mode 正在处理后台任务。

此代码块存在于我的app.component.ts中:

platform.ready().then(() => {
    this.backgroundMode.setDefaults({
      title: 'MyMusicApp',
        text: 'Android 8 problem!',
        resume: true,
        hidden: true,
        silent: true
    });
}

当媒体播放器提供商组件收到“播放”命令时,它将调用:

this.backgroundMode.enable();

在Android 6和7上,锁定屏幕后,音频会在后台很好地播放。但是,在Android 8上,每一次屏幕锁定(或超时)时,大约5分钟后,背景音频就会被切断。

据我了解,Android 8+正在使用一种新的实现方式来处理处于活动状态或在后台使用资源的第三方应用程序。上面的解决方案是试图解决这一临界问题的尝试,但似乎无济于事……

有人可以为此提供帮助吗?如何在Android 8上最好地处理背景音频?

2 个答案:

答案 0 :(得分:0)

我的应用程序也遇到了同样的问题。从今天开始,根据我的经验,原始的cordova-plugin-background-mode不适用于目标API级别26+(Android 8+)。许多人分叉了项目来进行自己的修复,其中很可能有些工作。

对于我来说,我选择使用另一个插件:cordova-plugin-foreground-service。它仅适用于Android 8以上版本的 ,但确实有效。

答案 1 :(得分:0)

我可以使用以下代码解决此问题:

    if (this.isCordova) {
        // play the file
            this.backgroundMode.enable();
            this.backgroundMode.setDefaults({ title: "title", text: 'title'});
            this.backgroundMode.on('activate').subscribe(() => {
                this.backgroundMode.disableWebViewOptimizations();
            });


    }

并将其添加到config.xml中:

    <config-file parent="./" target="app/src/main/AndroidManifest.xml" xmlns:android="http://schemas.android.com/apk/res/android">
        <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
        <uses-permission android:name="android.permission.WAKE_LOCK" />
        <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
    </config-file>