2015-12-30 18 views
6

Điều này đã hoạt động trong phiên bản cũ ionic nhưng giờ tôi đã cập nhật xong phần còn lại của ứng dụng này và quay lại để hoàn thành âm thanh này sẽ không phát.Ionic: Plugin phương tiện truyền thông - không thể hoạt động

Tôi có công tắc bật-tắt để phát âm thanh demo trong ứng dụng. Đây là đoạn code, với các bình luận và phần bình luận mà tôi nghĩ có thể gây ra vấn đề của tôi. Nó không phải là.

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

Tôi nhận được tất cả nhật ký bảng điều khiển phù hợp và tôi đặt tệp wav vào cùng thư mục với tập lệnh js của mình.

Vẫn không có gì.

Bất kỳ trợ giúp nào?

+0

Có phải '100bpm.wav' ở cùng một vị trí không? – Dino

+0

Có vẻ như bạn đang sử dụng plugin này? https://github.com/apache/cordova-plugin-media Nhật ký bàn điều khiển sẽ kích hoạt vì chúng độc lập với bất kỳ mã phụ thuộc plugin nào. Tôi sẽ đề nghị thêm lại các plugin sau khi bạn đã cập nhật ion. – knfd

Trả lời

5

Theo this post trên diễn đàn Ionic, bạn phải thêm '/ android_asset/www /' vào đường dẫn của tệp phương tiện trên thiết bị Android.

Vì vậy, mã của bạn trở nên như sau:

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

Trong thử nghiệm của tôi, tôi sử dụng một tài sản (phương tiện truyền thông) của bộ điều khiển $ phạm vi để lưu trữ đối tượng truyền thông và I kèm theo cũng successHandler, errorHandler-, statusHandler

Lưu ý rằng Media lớp (chức năng) đã có sẵn khi bạn khởi tạo nó với new media() trong SoundCtrl. Điều đó xảy ra với tôi rằng SoundCtrl được tạo trước onDeviceReady (tức là khi cordova.plugin.media có sẵn), vì vậy tôi đã thêm new Media(...) vào chức năng $scope.soundPlayer().

+0

Nó vẫn không hoạt động. Tôi không nhận được nơi tôi phải đặt tập tin thực tế. –

+1

tức là nếu bạn đặt tệp theo/www/audio/bạn nên tham chiếu nó bằng '$ scope.media = new Media ('/android_asset/www/audio/100bpm.wav', ...' – beaver

+0

Và bây giờ nó đang hoạt động. Tại sao điều này không được thực hiện phía trước và trung tâm trong các tài liệu là ngoài tôi.Cảm ơn mặc dù.Điều này đã thực hiện mãi mãi –

Các vấn đề liên quan