2015-12-30 11 views
6

Dies war in einer alten Version von ionic gearbeitet, aber jetzt habe ich den Rest der App zu aktualisieren beendet und ging zurück, um dies zu beenden, wird der Sound nicht spielen.Ionic: Media Plugin - kann es nicht funktionieren

Ich habe einen Ein-Aus-Schalter für die Wiedergabe eines Demo-Sounds in der App. Hier ist der Code, mit Kommentaren und mit dem auskommentierten Teil, von dem ich dachte, dass er mein Problem verursachen könnte. Es ist nicht.

.controller('SoundCtrl', function($scope, $timeout) { 

    $scope.sound_on = false; 
    var media  = new Media('100bpm.wav'); 

    $scope.soundPlayer = function() { 
     console.log("in soundPlayer"); 
     if($scope.sound_on == false) { 
      $scope.sound_on = true; 
      media.setVolume('1.0'); 
      media.play(); 
      console.log("sound on"); 
      console.log(media); 

      /*$timeout(function(){ 
      $scope.sound_on=false; 
      console.log("should change"); 
      }, 12600);*/ 

     } else { 
      media.stop(); 
      $scope.sound_on = false; 
      console.log("sound off"); 
     } 
    } 
}); 

ich alle richtigen Konsolenprotokolle, und ich habe die WAV-Datei in dem gleichen Ordner wie meine js Skripte.

Immer noch nichts.

Irgendwelche Hilfe?

+0

Ist '100bpm.wav' an der gleichen Stelle? – Dino

+0

Sieht so aus, als ob du dieses Plugin benutzt? https://github.com/apache/cordova-plugin-media Die Konsolenprotokolle werden ausgelöst, da sie unabhängig von pluginabhängigem Code sind. Ich würde vorschlagen, das Plugin wieder hinzuzufügen, nachdem Sie ionic aktualisiert haben. – knfd

Antwort

5

Nach this post auf Ionic Forum müssen Sie ‚/ android_asset/www /‘ auf dem Pfad der Mediendatei auf Android Gerät hinzufügen.

So Ihr Code wird wie folgt:

$scope.media = new Media('/android_asset/www/'+'100bpm.wav', 
     function() { 
      console.log("[mediaSuccess]"); 
     }, function(err) { 
      console.log("[mediaError]", err); 
     }, function(status) { 
      console.log("[mediaStatus]", status); 
     }); 

In meiner Studie habe ich eine Eigenschaft (Medien) des Controllers $ Umfang zu speichern Medienobjekt und ich angebracht auch successHandler, Errorhandler status

Hinweis: Achten Sie darauf, dass die Media Klasse (Funktion) bereits verfügbar ist, wenn Sie sie in SoundCtrl mit new media() instanziieren. Es passiert mir, dass SoundCtrl vor onDeviceReady erstellt wird (also wenn cordova.plugin.media verfügbar wird), also fügte ich new Media(...) zu $scope.soundPlayer() Funktion hinzu.

+0

Es funktioniert immer noch nicht. Ich bekomme nicht, wo ich die eigentliche Datei ablegen soll. –

+1

Wenn Sie also die Datei unter/www/audio/ablegen, sollten Sie sie mit '$ scope.media = new Media ('/android_asset/www/audio/100bpm.wav', ...' – beaver

+0

) verknüpfen. Jetzt funktioniert es. Warum das nicht in der Dokumentation vorne und in der Mitte gemacht wird, geht über mich hinaus.Danke, das hat ewig gedauert! –

Verwandte Themen