2016-04-25 60 views
1

我正在开发一个使用Ionic框架的Android应用程序。在那里我用Cordova Media Plugin来播放一些mp3文件。使用Cordova Media插件的问题

在我看不懂的代码中发生了一些奇怪的事情。在代码中,我有一个函数来创建一个媒体对象和播放:

function playAudio(src) { 
    myMedia = new Media(src, onSuccess, onError); 
    myMedia.play(); 
    document.getElementById('forTest2').innerHTML = "end of playAudio"; 
} 

在我的JavaScript代码,我有这样的代码段:

document.getElementById('forTest1').innerHTML = "before playAudio"; 
playAudio(audioSrc); 
document.getElementById('forTest3').innerHTML = "visited after playAudio return"; 

我已经加入document.getElementById线调试。

当我运行的代码我看到显示在文档屏幕下面的行:

before playAudio 
end of playAudio 
visited after playAudio return 

before playAudio 
end of playAudio 

我从playAudio函数返回看到这些3行,而不是2行以上后预期

但是我没有看到visited after playAudio return消息,这说明我们不会从playAudio(audioSrc);返回,这很奇怪。

对此有任何解释吗?

我在Android API 18上测试它,如果它很重要。

任何帮助真的很感激。

回答

0

你确定,你有一个ID为forTest3的元素?因为它没有意义,所以到达playAudio函数的末尾,然后下一条指令不被执行。它看起来更像是没有元素forTest3

尝试使用console.log()来代替。

function playAudio(src) { 
    myMedia = new Media(src, onSuccess, onError); 
    myMedia.play(); 
    console.log("end of playAudio"); 
} 

console.log("before playAudio"); 
playAudio(audioSrc); 
console.log("visited after playAudio return"); 

如果添加一些额外的输出会发生什么?

myMedia = new Media(src, onSuccess, onError, function(status){console.log(status)}; 
+0

是的我确定我有一个元素与该Id。我在想这里有一些与Cordova媒体插件有关的东西。 – TJ1

+0

但是,forTest2和forTest3之间没有指令。我不认为在这个地方发生了一些错误... –

+0

我知道,是否有可能'我的Media.play()'以某种方式锁定了一切,只是播放音频? – TJ1