Ionic: медиа плагин-не могу заставить его работать


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

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

.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-скрипты.

По-прежнему ничего.

Какая-нибудь помощь?

1 6

1 ответ:

Согласно этому сообщению на форуме 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);
        });

В моей пробной версии я использовал свойство (media) контроллера $scope для хранения объекта media и прикрепил также successHandler, errorHandler, statusHandler

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