2012-12-18 50 views
5

Im sử dụng phonegap 2.2.0 và tôi đã thử một số mã để lặp âm thanh để phát mà không bị gián đoạn. nhưng mã mà tôi đã thử không hoạt động trên thiết bị Android của tôi. ứng dụng của tôi là ứng dụng gốc. khi tôi chạy ứng dụng này trong thiết bị nó đang chơi chỉ trong một thời gian vòng lặp không hoạt động và đây là mã của tôi:Làm cách nào để lặp lại âm thanh trong điện thoại?

 


    function playAudio(url) { 

     var my_media = new Media(url, 
      function() { 
       console.log("playAudio():Audio Success"); 
      }, 
      function(err) { 
       console.log("playAudio():Audio Error: "+err); 
      }, 
      function(status) { 
        alert(status); 
        // if (my_media.MEDIA_STOPPED === 4) { 
        //  playAudio(host_root+"resources/medias/sardana.mp3"); 
          // my_media.play(); 
        // } 
     }); 

     // Play audio 
     my_media.play({numberOfLoops:99}); 
    } 

 

Bạn có thể cho tôi biết có gì sai ở đây không?

Trả lời

3

Lặp lại không được hỗ trợ cho Android chưa có trong Phonegap - do đó numberOfLoops không làm gì ngoại trừ trên thiết bị iOS.

+2

'var myMedia; var loop = function (status) { if (status === Media.MEDIA_STOPPED) { myMedia.play(); } }; myMedia = new Media ("/ audio/my.mp3", null, null, vòng lặp); myMedia.play(); ' – Sadi

11

Nghe thay đổi trạng thái và bắt đầu thanh toán trên MEDIA_STOPPED. Nếu bạn muốn người dùng để ngăn chặn âm thanh, sử dụng snd.pause() và không snd.stop()

này đã làm việc cho tôi:

document.addEventListener("deviceready", onDeviceReady, false); 

    var getPhoneGapPath = function() { 
     var path = window.location.pathname; 
     path = path.substr(path, path.length - 10); 
     return path; 
    }; 

    var snd = null; 

    function onDeviceReady(){ 
     snd = new Media(getPhoneGapPath() + "sound/funk_game_loop.mp3", onSuccess, onError, onStatus); 
     snd.play(); 
    } 

    // onSuccess Callback 
    function onSuccess() { 
    } 
    // onError Callback 
    function onError(error) { 
    } 
    // onStatus Callback 
    function onStatus(status) { 
     if(status==Media.MEDIA_STOPPED) { 
      snd.play(); 
     } 
    } 
+0

Nó có một số độ trễ mặc dù – Amyth

+0

Tôi đang sử dụng giải pháp này nhưng mỗi một lần trong một thời gian âm nhạc sẽ chỉ dừng lại. nó như thể đôi khi onStatus không bị sa thải. Bất cứ ai khác nhìn thấy vấn đề này? – Leo

+0

Đó là một số thời gian trễ khi bắt đầu một vòng lặp mới. Nhưng nó làm việc cho tôi. – Tuan

Các vấn đề liên quan