我的网络电台播放器应用程序失败,升级到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 回答
要回答我自己的问题,之前在cordova media plugin stopped working on Android 6中提供的补丁确实回答了我的问题 . 我的错误是在错误的地方应用它 . 直接在platforms / android / src / org / apache / cordova / media / AudioPlayer.java中更改代码并重建应用程序确实有效 . (我正在修改插件代码) . 注释掉第354行,它变成了,
这就是诀窍 .