我一直有一些问题让我的音频播放器在iOS和Android中使用PhoneGap Media插件通过Build 3.1正常工作
我有播放和停止工作正常的按钮,但是当你点击播放时,音频网址加载并冻结操作系统会有轻微的延迟 . 我可以稍微延迟一下,所以我想我会在屏幕上弹出一个加载图标 .
我已经在这里发布了一些时间试图让JS工作,因为我没有专家,但刚才我意识到我的代码中没有任何东西可以检查音频是否真的在播放!
playAudio函数加载到音频中,然后将播放按钮设置为停止按钮 . 我以为 function success() {
意味着它正在播放,但它实际上意味着它已经完成了播放 .
在我的代码中,当点击音频的链接时,加载器功能使得一个微调器出现在屏幕上,我认为“成功”会关闭加载器,因为它实际上发生了什么是加载器保持打开并在轨道后消失已完成!
我意识到我需要一种方法来检测轨道是否实际上正在播放!
我怎么做?!?!!
继承人的功能:
function loadPlay(src, trackName) {
loader();
playAudio(src, trackName);
}
function loader() {
// make a loader spinner appear as track loads
$(".loading").addClass("loadingnow");
}
function playAudio(src,trackname) {
// for Android
if (audioPlaying === false) {
if (device.platform == 'Android') {
src = '/android_asset/www/' + src;
}
media = new Media(src, success, error_error);
media.play();
//add playing class so play button is replaced with stop button
document.getElementById(trackname).parentNode.className="playing";
audioPlaying = true;
} else {
//audio is already playing
}
}
function success() {
// track isplaying so remove the stop button put play button back
$(".playing").removeClass("playing");
// now track is playing remove the loader spinner
$(".loading").removeClass("loadingnow");
audioPlaying = false;
}
function error_error(e) {
//alert('great error');
//alert(e.message);
}
function stopAudio() {
// stop playing track
if (media) {
media.stop();
audioPlaying = false;
}
}
下面是PhoneGap Media插件API的链接:http://docs.phonegap.com/en/3.1.0/cordova_media_media.md.html#Media
我需要使用这个位吗?
Media.MEDIA_STARTING = 1;
Media.MEDIA_RUNNING = 2;
Media.MEDIA_PAUSED = 3;
Media.MEDIA_STOPPED = 4;
2 回答
来自docs:
mediaStatus
回调是Media
构造函数中提供的可选第三个回调...据我所知,ilovett的答案可能不适合你,因为在另外两种情况下会调用doSomething()函数:
当有人用media.stop()停止音乐时
当媒体在Android上发布(media.release())时(不确定其他人,但iOS不会调用它) .
我这样做的方法是设置一个变量,以确保函数不会被意外调用 .