android - phonegap 媒体声音在 5 次后停止播放

标签 android jquery cordova jquery-mobile media-player

如果用户正确回答问题,我需要播放“正确”的声音,如果不正确,我需要播放“错误”的声音。声音一开始是在播放,但在我第五次回答正确后,已经第五次输出第四次“正确”的声音,听不到任何声音。似乎音乐最多只能播放 4 次。 造成这种情况的可能原因是什么?

已更新* 我在我的 stopAudio() 中添加了 media.release 但到目前为止可以听到第 6 次(改进)的声音,但它仍然不适合我的情况。 (多题需要同一个音效)

Js.文件

// Audio player
    var my_media = null;
    var mediaTimer = null;

    // Play audio
    function playAudio(src) {
        // Create Media object from src
        my_media = new Media(src, null, soundCB);
        my_media.play();
    }

    function soundCB(err){
        console.log("playAudio():Audio Error: "+err);
    }

    // Stop audio
    // 
    function stopAudio() {
        if (my_media) {
            alert("AQA");
            my_media.stop();
            my_media.release();
        }
        clearInterval(mediaTimer);
        mediaTimer = null;
    }

/////问题部分//////

$("#answer").live('tap', function(event){   

if(buttonAns==true) {
    $this= $(this);     
    buttonAns = false;   
var choice = $this.attr("class");   
if((correctAnsNo == 0 && choice =="answer0")||(correctAnsNo == 1 && choice =="answer1")||(correctAnsNo == 2 && choice =="answer2")){

        playAudio('/android_asset/www/audio/fall.mp3'); //falling sound     
        correct = parseInt(correct)+2;  

        playAudio('/android_asset/www/audio/correct.mp3'); //dingdong
    }else{          
        playAudio('/android_asset/www/audio/wrong1.wav');           
    }
    if(quesNo < wordsNo ){ 
        setTimeout(function() {    
            buttonAns = true;                       
            db.transaction(queryQuesDB, errorCB);
        },1800); 
    }else{
        endLevel();         
    } 
} else {
    event.preventDefault();
}       
});

最佳答案

Android 用于播放声音的资源有限。每次要播放文件时,您都会不断创建一个新的媒体对象。您需要释放不使用的声音。如果您需要多次播放这些声音,请考虑创建单独的媒体对象来保存对这些声音的引用。

继续阅读 media.release .

关于android - phonegap 媒体声音在 5 次后停止播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13566064/

相关文章:

jQuery 在调整大小时更改 img 的宽度有效,但在最大化时无效

javascript - jQuery 的 "each()"方法是 for 循环吗?

cordova - INSTALL_FAILED_OLDER_SDK Cordova

javascript - 链接到 Cordova 应用程序中的评论页面

android - 快速检测信标是否超出范围

android - RemoteView 不在自定义通知中显示按钮

android - 在图库中将图像从一个文件夹复制到另一个文件夹

android - SwipeRefreshLayout 加载圈没有隐藏在Android中

javascript - Safari 上的 pageshow 事件

android - Android 中的 Cordova jar