Android 11 媒体播放器不工作,Android SDK 30

Posted

技术标签:

【中文标题】Android 11 媒体播放器不工作,Android SDK 30【英文标题】:Android 11 Media player not working , Android SDK 30 【发布时间】:2021-11-21 08:38:40 【问题描述】:

升级到 android 11 (API 30) 后,我遇到了 cordova-plugin-media 的问题。 它没有播放音频流.. 当我单击播放音频时,输出为:错误:1(指 MediaError.MEDIA_ERR_ABORTED = 1) 我有一个应用程序构建器,其中有 20K 应用程序依赖于这个插件(需要这个功能)- 我不需要录制和播放。 我们使用网络流,例如 (-[(http://streams.radiobob.de/bob-chillout/aac-64/streams.radiobob.de/)]) 并且只想在单击按钮时播放此音频流。 这里是config.xml,我正在使用-

<?xml version="1.0" encoding="UTF-8"?>
<widget xmlns="http://www.w3.org/ns/widgets" 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:gap="http://phonegap.com/ns/1.0" id="app.*********" version="3.6.1" android-versionCode="30">
<name>******</name>
<description />
<author href="444656972743" email="">*********</author>
<preference name="orientation" value="portrait" />
<preference name="fullscreen" value="false" />
<preference name="AndroidPersistentFileLocation" value="Compatibility" />
<preference name="android-build-tool" value="gradle" />
<preference name="SplashScreenDelay" value="3000" />
<preference name="AllowInlineMediaPlayback" value="true" />
<preference name="MediaPlaybackRequiresUserAction" value="false" />
<preference name="android-minSdkVersion" value="22" />
<preference name="android-targetSdkVersion" value="30" />
<feature name="NetworkStatus">
    <param name="android-package" value="org.apache.cordova.networkinformation.NetworkManager" 
 />
</feature>
<feature name="SocialSharing">
    <param name="android-package" value="nl.xservices.plugins.SocialSharing" />
</feature>
<feature name="InAppBrowser">
    <param name="android-package" value="org.apache.cordova.inappbrowser.InAppBrowser" />
</feature>
<feature name="Notification">
    <param name="android-package" value="org.apache.cordova.dialogs.Notification" />
</feature>
<feature name="PushPlugin">
    <param name="android-package" value="com.plugin.gcm.PushPlugin" />
</feature>
<plugin name="cordova-plugin-keyboard" source="npm" spec="1.2.0" />
<plugin name="cordova-plugin-device" source="npm" spec="1.1.7" />
<platform name="android">
    <preference name="AndroidXEnabled" value="true" />
    <preference name="AndroidInsecureFileModeEnabled" value="true" />
    <resource-file src="google-services.json" target="app/google-services.json" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <icon src="icons/android-ldpi.png" density="ldpi" />
    <icon src="icons/android-mdpi.png" density="mdpi" />
    <icon src="icons/android-hdpi.png" density="hdpi" />
    <icon src="icons/android-xhdpi.png" density="xhdpi" />
    <icon src="icons/android-xxhdpi.png" density="xxhdpi" />
    <icon src="icons/android-xxxhdpi.png" density="xxxhdpi" />
    <icon src="icons/android-xxhdpi.png" density="fr-xxhdpi" />
    <splash src="splashscreen/android-ldpi.png" density="ldpi" />
    <splash src="splashscreen/android-mdpi.png" density="mdpi" />
    <splash src="splashscreen/android-hdpi.png" density="hdpi" />
    <splash src="splashscreen/android-xhdpi.png" density="xhdpi" />
    <splash src="splashscreen/android-xxhdpi.png" density="fr-xhdpi" />
    <splash src="splashscreen/android-xxhdpi.png" density="land-xxhdpi" />
    <splash src="splashscreen/android-xxhdpi.png" density="port-xxhdpi" />
    <splash src="splashscreen/android-xxxhdpi.png" density="xxxhdpi" />
    <preference name="KeepRunning" value="true" />
  </platform>
  <access origin="*" subdomains="true" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<allow-navigation href="https://www.youtube.com/*" />
<allow-navigation href="http://www.youtube.com/*" />
<allow-navigation href="https://player.vimeo.com/*" />
<allow-navigation href="http://player.vimeo.com/*" />
<plugin name="cordova-plugin-media" spec="~5.0.3">
    <variable name="KEEP_AVAUDiosESSION_ALWAYS_ACTIVE" value="NO" />
</plugin>
<plugin name="cordova-plugin-androidx-adapter" source="npm" spec="1.1.1" />
<plugin name="cordova-plugin-camera" source="npm" spec="4.0.3" />
<plugin name="cordova-plugin-inappbrowser" source="npm" spec="4.0.0" />
<plugin name="cordova-plugin-globalization" source="npm" spec="1.0.9" />
<plugin name="cordova-plugin-network-information" source="npm" spec="2.0.1" />
<plugin name="cordova-plugin-splashscreen" spec="^4.0.3" />
<plugin name="cordova-plugin-x-socialsharing" source="npm" spec="6.0.0" />
<plugin name="cordova-plugin-dialogs" source="npm" spec="2.0.1" />
<plugin name="cordova-sqlite-evcore-extbuild-free" spec="0.14.0" source="npm" />
</widget>

我感谢任何解决方案或解决方法..

【问题讨论】:

它读作android-versionCode="28" ...如果没有某种堆栈跟踪,这个问题毫无意义。最好只关注 GitHub 上的问题:github.com/apache/cordova-plugin-media/issues/185 这只是一个拼写错误,我编辑过,我使用的是 android-versionCode="30" 如果您删除&lt;preference name="AndroidInsecureFileModeEnabled" value="true" /&gt; ...您最终可能会意识到,您找错了一棵树。当它无法缓存流时,它可能也不会播放它。 【参考方案1】:

https://github.com/apache/cordova-plugin-media 中有一个新的更新来解决 android 11+ 的保存文件路径问题。

如果您更新“/platforms/android/app/src/main/java/org/apache/cordova/media/AudioHandler.java”和“/platforms/android/app/src/main/java/org/apache /cordova/media/AudioPlayer.java”,那么它应该可以工作了。

https://raw.githubusercontent.com/apache/cordova-plugin-media/4093f7e14fe65f94ffbef072ed188a0205e78a59/src/android/AudioHandler.java

https://raw.githubusercontent.com/apache/cordova-plugin-media/4093f7e14fe65f94ffbef072ed188a0205e78a59/src/android/AudioPlayer.java

【讨论】:

以上是关于Android 11 媒体播放器不工作,Android SDK 30的主要内容,如果未能解决你的问题,请参考以下文章

github上十二款最著名的Android播放器开源项目

如何在 Android Studio 中导入模块而不创建副本

当用户关闭屏幕android时,使应用程序正常工作

多个 MediaPlayers 不断失败 - Android 工作室

在android中停止几个媒体播放器

Lottie AnimationView 在 iOS 中不工作,但在 Android c# 实现中工作