2012-11-26 31 views
7

Tôi cần phát âm thanh "chính xác" nếu người dùng trả lời đúng câu hỏi và "sai" nếu không chính xác. Âm thanh được phát lúc đầu nhưng sau lần thứ năm tôi trả lời chính xác cái đầu ra lần thứ tư "đúng" âm thanh đã là lần thứ năm, không có âm thanh nào được nghe thấy. Có vẻ như âm nhạc chỉ có thể chơi nhiều nhất ở lần thứ 4. Lý do có thể gây ra điều này là gì?âm thanh mediagap dừng phát sau 5 lần

được cập nhật * Tôi đã thêm phương tiện vào.Chúng tôi có thể nghe thấy âm thanh của bạn (nhưng vẫn không phù hợp với trường hợp của tôi). (Nhiều câu hỏi cần các hiệu ứng âm thanh giống nhau)

Js.file

// 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; 
    } 

///// câu hỏi phần //////

$("#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(); 
}  
}); 

Trả lời

8

Android có một số lượng hữu hạn các tài nguyên để phát âm thanh. Bạn tiếp tục tạo đối tượng Đa phương tiện mới mỗi khi bạn muốn phát tệp. Bạn cần giải phóng âm thanh bạn không sử dụng. Nếu bạn cần phát những âm thanh đó nhiều lần, hãy xem xét việc tạo các đối tượng phương tiện riêng biệt để giữ một tham chiếu đến những âm thanh đó.

Đọc trên media.release.

+0

bạn có ý nghĩa gì bởi đối tượng riêng biệt? cảm ơn đã giúp đỡ. –

+0

Tạo ba vars. Một cho mùa thu, chính xác và sai tương ứng. –

6

Tôi đã gặp vấn đề tương tự. Giải pháp tôi đã làm .:

 if(media){ 
     media.stop(); 
     media.release(); 
    } 
    media = new Media(...); 
5

Đây là mẹo của tôi: Tôi đã phát hành khi phát xong hoặc xảy ra lỗi.

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); 
    } 
} 
Các vấn đề liên quan