2015-12-30 22 views
6

To działało w starej wersji ionic, ale teraz skończyłem aktualizować resztę tej aplikacji i wróciłem, by sfinalizować to, że dźwięk nie zostanie odtworzony.Wtyczka jonowa: Media - nie można go uruchomić

Mam przełącznik on-off do odtwarzania dźwięku demonstracyjnego w aplikacji. Oto kod z komentarzami i komentarzem, który według mnie może być przyczyną mojego problemu. Nie jest.

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

Dostaję wszystkie właściwe logi konsoli i umieszczam plik wav w tym samym folderze, co moje skrypty js.

Jeszcze nic.

Każda pomoc?

+0

Czy "100bpm.wav" znajduje się w tej samej lokalizacji? – Dino

+0

Wygląda na to, że używasz tej wtyczki? https://github.com/apache/cordova-plugin-media Dzienniki konsoli będą uruchamiane, ponieważ są niezależne od kodu zależnego od wtyczki. Sugerowałbym ponowne dodanie wtyczki po aktualizacji jonowej. – knfd

Odpowiedz

5

Zgodnie z this post na forum Ionic należy dodać "/ android_asset/www /" do ścieżki pliku multimedialnego na urządzeniu Android.

Więc twój kod staje się jak poniżej:

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

W moim procesie użyłem właściwość (media) zakresu kontroler $ do przechowywania multimediów obiektu i dołączone także successHandler, errorHandler, statusHandler

Uwaga: należy zwrócić uwagę, że klasa (funkcja) Media jest już dostępna, gdy utworzysz instancję z new media() w SoundCtrl. Zdarza mi się, że SoundCtrl zostanie utworzony przed onDeviceReady (to znaczy, gdy cordova.plugin.media stanie się dostępny), więc dodałem funkcję new Media(...) do $scope.soundPlayer().

+0

To nadal nie działa. Nie dostaję się tam, gdzie powinienem umieścić rzeczywisty plik. –

+1

tzn. Jeśli umieścisz plik w katalogu/www/audio/powinieneś odwołać się do niego za pomocą '$ scope.media = new Media ('/android_asset/www/audio/100bpm.wav', ...' – beaver

+0

A teraz działa. Dlaczego to nie jest w centrum uwagi w dokumentacji jest poza mną.Dzięki, że trwało to na zawsze! –

Powiązane problemy