【问题标题】:how to play audio mp3 in ionic when page ( view) is loaded加载页面(视图)时如何在 ionic 中播放音频 mp3
【发布时间】:2015-03-23 10:34:54
【问题描述】:

我想在我的页面加载时在后台播放音频 mp3,所以如果我使用按钮单击,它可以工作,但如果我在我的控制器加载 $state 时尝试播放它,它就不起作用:

angular.module('starter', ['ionic','ngCordova'])

.run(function($ionicPlatform) {
  $ionicPlatform.ready(function() {

    if(window.cordova && window.cordova.plugins.Keyboard) {
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
    }
    if(window.StatusBar) {
      StatusBar.styleDefault();
    }
  });
})
.controller("ExampleController", function($scope, $cordovaMedia) {

    $scope.play = function(url) {
        var my_media = new Media(url,
            function () {
                console.log("playAudio() : success");
           },
            function (err) {
                 console.log("playAudio() : : "+err);
           });
        my_media.play();
    };
   $scope.play('/android_asset/www/someAudio.mp3');
});

【问题讨论】:

    标签: android ios angularjs cordova ionic


    【解决方案1】:

    $scope.play 没有定义。您的意思是在 my_media 所在的位置定义一个函数吗?你需要稍微改变一下:

    $scope.play = function(url) {
        var my_media = new Media(url,
            function () {
                console.log("playAudio() : success");
           },
            function (err) {
                 console.log("playAudio() : : "+err);
           });
        my_media.play();
    };
    

    【讨论】:

    • 不,不是。您没有在 $scope 对象中定义游戏。您将 play 定义为全局范围内的函数。你想要,我相信: $scope.play = function(etc) 然后 $scope.play('someurl');
    • 是的,对不起!我已经再次编辑它......但它不起作用
    • 好的,你得到了什么错误?另外,您在等待 deviceReady 事件吗?
    • 此页面不是主页,因此 Divice 已准备就绪,我没有收到任何错误...当我使用按钮调用该函数时,它工作正常,但是当我拨打电话时我描述它,它不起作用。
    • 您能否更新代码以显示您如何通过按钮运行它?
    【解决方案2】:

    感谢您的帮助,答案是:

      $scope.play = function() {
          var mp3URL = getMediaURL("sounds/yourMp3AudioFile.mp3");
          var media = new Media(mp3URL, null, null, mediaStatusCallback);
          media.play();
       } 
       var mediaStatusCallback = function(status) {
           if(status == 1) {
               $ionicLoading.show({template: 'Loading...'});
           } else {
               $ionicLoading.hide();
           }
       }
       function getMediaURL(s) {
           var isAndroid = ionic.Platform.isAndroid();
           if(isAndroid) return "/android_asset/www/" + s;
           return s;
        }
       $timeout(function() {
           $scope.play();
       }, 1000);
    

    【讨论】:

    • 嗨。我尝试了相同的代码,但它不起作用。它总是显示 Loading... 弹出窗口并且它永远不会消失。我应该将 mp3 文件放在我的 Ionic 项目中的什么位置?截至目前,我正在努力处理互联网上的文件。请帮忙。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-18
    • 2019-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多