2015-12-30 2 views
6

Это работало в старой версии ionic, но теперь я закончил обновление оставшейся части этого приложения и вернулся, чтобы завершить это, звук не будет воспроизводиться.Ionic: Media plugin - не может заставить его работать

У меня есть переключатель включения/выключения для воспроизведения демонстрационного звука в приложении. Вот код, с комментариями и с комментарием, который, как я думал, может вызвать мою проблему. Это не так.

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

Я получаю все необходимые консольные журналы, и я помещаю wav-файл в ту же папку, что и мои js-скрипты.

Все еще ничего.

Любая помощь?

+0

Является ли '100bpm.wav' в том же месте? – Dino

+0

Похоже, вы используете этот плагин? https://github.com/apache/cordova-plugin-media Журналы консоли будут срабатывать, поскольку они не зависят от любого зависимого от плагина кода. Я бы предложил повторно добавить плагин после того, как вы обновили ионный. – knfd

ответ

5

Согласно this post на Ionic форуме, вы должны добавить '/ android_asset/www /' на путь вашего медиафайла на Android устройства.

Так что ваш код становится ниже:

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

В моем испытании я использовал свойство (СМИ) контроллера $ объема для хранения медиа-объект и я прикрепил также successHandler, ErrorHandler, statusHandler

NB: обратите внимание, что класс Media (функция) уже доступен, когда вы создаете его с помощью new media() в SoundCtrl. Мне кажется, что SoundCtrl будет создан до onDeviceReady (то есть когда появится cordova.plugin.media), поэтому я добавил new Media(...) в $scope.soundPlayer().

+0

Он все еще не работает. Я не понимаю, где я должен поместить фактический файл. –

+1

т. Е. Если вы поместите файл под/www/audio /, вы должны ссылаться на него с помощью '$ scope.media = new Media ('/android_asset/www/audio/100bpm.wav', ...' – beaver

+0

И теперь он работает. Почему это не делается спереди и в центре в документах вне меня. Спасибо, хотя это уже навсегда! –

Смежные вопросы