首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >phonegap媒体声音5次后停止播放

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

Stack Overflow用户
提问于 2012-11-26 13:42:12
回答 3查看 3.8K关注 0票数 8

我需要播放“正确”的声音,如果用户正确回答问题和“错误”,如果不正确。声音最初在播放,但在第五次我正确回答哪个输出第四次“正确”的声音已经第五次了,没有声音可以听到。这音乐似乎最多只能演奏第四次。造成这种情况的可能原因是什么?

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

Js.file

代码语言:javascript
复制
// 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;
    }

问题部分/

代码语言:javascript
复制
$("#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();
}       
});
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-26 15:47:21

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

读一读media.release

票数 9
EN

Stack Overflow用户

发布于 2013-02-14 09:15:28

我也有同样的问题。我做过的解决方案:

代码语言:javascript
复制
     if(media){ 
       media.stop();
       media.release();
     }
     media = new Media(...);
票数 7
EN

Stack Overflow用户

发布于 2013-03-21 01:39:25

下面是我的技巧:我在它上发布了它,完成了播放,或者出现了一个错误。

代码语言:javascript
复制
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);
    }
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13566064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档