【发布时间】:2015-02-13 00:13:32
【问题描述】:
我在通过 Build 3.1 使用 PhoneGap Media 插件让我的音频播放器在 iOS 和 Android 中正常工作时遇到了一些问题
我的播放和停止按钮可以正常工作,但是当您点击播放时,音频 URL 加载时会出现轻微延迟,并且会冻结操作系统。我可以应付它,因为它的延迟很短,所以我想我会在屏幕上弹出一个加载图标。
我在这里发布了几次试图让 JS 以我不是专家的身份工作,但现在我意识到我的代码中没有任何内容可以检查音频是否真的在播放!
playAudio 函数加载音频,然后将播放按钮设置为停止按钮。我以为function success() {表示它正在播放,但实际上它意味着它已完成播放。
在我的代码中,当单击音频链接时,加载器功能会在屏幕上显示一个微调器,我认为“成功”会关闭加载器,因为它加载时实际上发生的事情是 laoder 保持开启并消失曲目结束后!
我意识到我需要一种方法来检测曲目是否正在播放!
我该怎么做?!?!!
功能如下:
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;
【问题讨论】:
标签: javascript cordova media