2012-12-18 14 views
5

Im przy użyciu phonegap 2.2.0 i próbowałem trochę kodu pętli audio do odtwarzania bez przerwy. ale kod, który próbowałem nie działa na moim urządzeniu z Androidem. moja aplikacja to natywna aplikacja. kiedy uruchomić tę aplikację w urządzeniu jest to gra tylko jeden raz pętla nie działa i tu jest mój kodu:Jak zapętlić audio w phonegap?

 


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

 

Czy możesz mi powiedzieć, co jest nie tak tutaj?

Odpowiedz

3

Zapętlanie nie jest obsługiwane w systemie Android jeszcze w Phonegap - więc numberOfLoops nie robi nic poza urządzeniami z systemem iOS.

+2

'var myMedia; var loop = funkcja (status) { if (status === Media.MEDIA_STOPPED) { myMedia.play(); } }; myMedia = new Media ("/ audio/my.mp3", null, null, loop); myMedia.play(); ' – Sadi

11

Słuchaj zmiany statusu i zacznij płacić w MEDIA_STOPPED. Jeśli chcesz, aby użytkownik, aby wyłączyć dźwięk, należy snd.pause() i nie snd.stop()

Ten pracował dla mnie:

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

Ma pewne opóźnienie, ale – Amyth

+0

Korzystam z tego rozwiązania, ale od czasu do czasu muzyka się kończy. to tak, jakby czasami onStatus nie został zwolniony. Ktoś jeszcze widział ten problem? – Leo

+0

To trochę czasu opóźnienia przy rozpoczynaniu nowej pętli. Ale to działa dla mnie. – Tuan

Powiązane problemy