首页 文章

Cordova Media插件在Android 6(Marshmallow)上使用mp3互联网音频流失败

提问于
浏览
2

我的网络电台播放器应用程序失败,升级到Android 6(Marshmallow) . 为了测试我从Media插件的文档复制了示例代码(下面),并在最新的Cordova(6.1.1),Android平台(5.1.1),浏览器平台(4.1.0)和Media插件上构建了一个小测试应用程序(2.3.0) . 我还添加了必要的白名单声明(如下) . 在浏览器平台上,它可以播放互联网文件和互联网流 . 在Android平台上,它无法启动mp3互联网流 . 控制台日志显示流在1秒内终止,并且调用OnSuccess回调 . 没有错误消息,只记录“playAudio():音频成功”并终止 .

玩家代码是

var src = "http://audio.wgbh.org:8104";
my_media = new Media(src,
   // success callback
   function () {
       console.log("playAudio():Audio Success");
   },
   // error callback
   function (err) {
       console.log("playAudio():Audio Error: " + err);
}

config.xml白名单是(是不安全的,我稍后会解决)

<plugin name="cordova-plugin-whitelist" source="npm" spec="1" />
<allow-navigation href="*" />
<allow-intent href="*" />
<access origin="*"  launch-external="yes" /> <!-- Required for iOS9 -->

2015年12月之前的Stack Overflow问题出现了同样的问题“cordova media plugin stopped working on Android 6” . 它建议使用AudioPlayer的java补丁 . 我做了那个改变并重建了我的测试应用程序 . 但这并没有改变任何事情 . Cordova构建是否足以实现这一变化?

顺便说一句,在插入USB的真实手机上进行测试,通过Chrome开发工具查看日志 .

我错过了什么?或者这是媒体插件java代码或Android平台中的错误?

1 回答

  • 2

    要回答我自己的问题,之前在cordova media plugin stopped working on Android 6中提供的补丁确实回答了我的问题 . 我的错误是在错误的地方应用它 . 直接在platforms / android / src / org / apache / cordova / media / AudioPlayer.java中更改代码并重建应用程序确实有效 . (我正在修改插件代码) . 注释掉第354行,它变成了,

    //this.seekToPlaying(this.seekOnPrepared);
    

    这就是诀窍 .

相关问题