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

Posted

技术标签:

【中文标题】phonegap 媒体声音在 5 次后停止播放【英文标题】:phonegap media sound stop playing after 5 times 【发布时间】:2012-11-14 00:02:14 【问题描述】:

如果用户正确回答问题,我需要播放“正确”声音,如果不正确,我需要播放“错误”声音。声音开始播放,但在第五次之后我回答正确,第四次输出“正确”的声音已经第五次了,听不到声音。音乐似乎最多只能播放 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();
       
);

【问题讨论】:

【参考方案1】:

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

阅读media.release。

【讨论】:

创建三个变量。一个代表跌倒,分别是正确和错误。【参考方案2】:

我遇到了同样的问题。 我做的解决方案:

     if(media) 
       media.stop();
       media.release();
     
     media = new Media(...);

【讨论】:

【参考方案3】:

这是我的窍门:我在它播放完或发生错误时释放它。

function playAudio(url) 
    try 

        var my_media = new Media(url,
            // success callback
            function () 
                **my_media.release();**
            ,
            // error callback
            function (err) 
                **my_media.release();**
            );

        // Play audio
        my_media.play();
     catch (e) 
        alert(e.message);
    

【讨论】:

以上是关于phonegap 媒体声音在 5 次后停止播放的主要内容,如果未能解决你的问题,请参考以下文章

当 iTunes 从网络链接启动时,Phonegap 媒体对象停止播放

在 cordova/phonegap Android 应用程序上关闭屏幕后媒体停止播放

PhoneGap/Cordova iOS 播放声音禁用麦克风

停止播放通过 SoundEffect.FromStream 调用的声音

媒体未在 iOS phonegap 1.5 应用程序中播放

播放两次后动态声音不播放