我的网络电台播放器应用程序升级到Android 6(棉花糖)失败了。为了测试,我从媒体插件的文档中复制了示例代码(如下所示),并在最新的Cordova (6.1.1)、Android平台(5.1.1)、浏览器平台(4.1.0)和媒体插件(2.3.0)上构建了一个小型测试应用程序。我还添加了必要的白名单语句(如下所示)。在浏览器平台上,它既可以播放互联网文件,也可以播放互联网流。在Android平台上,它无法启动mp3互联网流。控制台日志显示流在1秒内被销毁,并调用了OnSuccess回调。没有错误消息,只记录"playAudio():Audio Success“并终止。
播放器代码是
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月之前的堆栈溢出问题也有相同的问题"cordova media plugin stopped working on Android 6“。它向AudioPlayer推荐了一个java补丁。我做了更改并重新构建了我的测试应用程序。但这并没有改变任何事情。Cordova构建是否足以实现这一改变?
顺便说一句,在插入USB的真实手机上测试,通过Chrome开发工具查看日志。
我遗漏了什么?或者这是Media plugin java代码或者Android平台的bug?
发布于 2016-05-07 05:35:11
为了回答我自己的问题,之前在cordova media plugin stopped working on Android 6中提供的补丁确实解决了我的问题。我的错误是把它用在了错误的地方。直接在platforms/android/src/org/apache/cordova/media/AudioPlayer.java中更改代码并重新构建应用程序确实有效。(我只是在修补插件代码)。注释掉第354行,这样它就变成了
//this.seekToPlaying(this.seekOnPrepared);这就起到了作用。
https://stackoverflow.com/questions/37075354
复制相似问题