2015-12-30 18 views
6

Questo aveva funzionato in una vecchia versione di ionic ma ora ho finito di aggiornare il resto di questa app e sono tornato a finalizzare l'audio non verrà riprodotto.Ionico: plug-in per i media - impossibile farlo funzionare

Ho un interruttore on-off per riprodurre un suono dimostrativo nell'app. Ecco il codice, con i commenti e con la parte commentata che pensavo potesse causare il mio problema. Non lo è.

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

Ottengo tutti i registri della console giusti e ho inserito il file wav nella stessa cartella dei miei script js.

Ancora niente.

Qualsiasi aiuto?

+0

È '100bpm.wav' nella stessa posizione? – Dino

+0

Sembra che tu stia usando questo plugin? https://github.com/apache/cordova-plugin-media I log della console verranno attivati ​​perché sono indipendenti da qualsiasi codice dipendente dai plugin. Suggerirei di aggiungere nuovamente il plugin dopo aver aggiornato ionico. – knfd

risposta

5

In base allo this post sul forum Ionic, è necessario aggiungere "/ android_asset/www /" al percorso del file multimediale su dispositivo Android.

Così il codice diventa come di seguito:

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

Nel mio studio ho usato una proprietà (media) del controller $ scopo di conservare i supporti oggetto e ho attaccato anche successHandler, errorHandler, statusHandler

NB: prestare attenzione che la classe (funzione) Media è già disponibile quando si crea un'istanza con new media() in SoundCtrl. Mi succede che SoundCtrl sia creato prima del onDeviceReady (cioè quando cordova.plugin.media diventa disponibile), quindi ho aggiunto la funzione new Media(...) alla funzione $scope.soundPlayer().

+0

Ancora non funziona. Non capisco dove dovrei mettere il file vero e proprio. –

+1

ie se metti il ​​file in/www/audio/dovresti fare riferimento a '$ scope.media = new Media ('/android_asset/www/audio/100bpm.wav', ...' – beaver

+0

E ora funziona. Perché questo non è fatto in primo piano nella documentazione è oltre me.Grazie però. Questo ha preso per sempre! –

Problemi correlati