2012-12-18 10 views
5

Ich benutze Phonegap 2.2.0 und ich versuchte etwas Code, um das Audio für die Wiedergabe ohne Unterbrechung zu loopen. aber der Code, den ich ausprobiert habe funktioniert nicht in meinem Android-Gerät. Meine Anwendung ist eine native App. wenn ich diese App in Gerät laufe es nur für eine Zeit spielt die Schleife nicht funktioniert, und hier ist mein Code:Wie ein Audio in Phonegap zu loopen?

 


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

 

Können Sie mir sagen, was hier falsch ist?

Antwort

3

Looping wird für Android noch nicht in Phonegap unterstützt - so funktioniert numberOfLoops nur auf iOS-Geräten.

+2

'var Mymedia; var loop = Funktion (Status) { if (status === Media.MEDIA_STOPPED) { myMedia.play(); } }; myMedia = neues Medium ("/ audio/my.mp3", null, null, loop); myMedia.play(); ' – Sadi

11

Statusänderung anhören und auf MEDIA_STOPPED bezahlen. Wenn Sie wollen, dass der Benutzer den Ton zu stoppen, verwenden snd.pause() und nicht snd.stop()

Das ist für mich gearbeitet:

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

Es hat etwas Latenz obwohl – Amyth

+0

Ich benutze diese Lösung, aber hin und wieder stoppt die Musik einfach. es ist so, als ob der onStatus manchmal nicht ausgelöst wird. Hat noch jemand dieses Problem? – Leo

+0

Es ist etwas Verzögerungszeit, wenn eine neue Schleife gestartet wird. Aber es funktioniert für mich. – Tuan