ios上带有cordova-plugin-media的多个音频文件

时间:2019-12-18 19:54:36

标签: ios cordova ionic-framework

我的控制器中有以下代码(该项目位于ionic 1中,并使用cordova-plugin-media 5.0.3插件):

.controller('AudioCtrl', function($scope) {
  console.log('in AudioCtrl');
  let AudioFiles =[
    {
      url:"sample.aac"
    },
    {
      url:"8b2d52b76e71729c8073b8340f7c0607.m4a"
    },
    {
      url:"test1.mp4"
    }
  ];
  $scope.MediaFiles = [];

  $scope.$on('$ionicView.beforeEnter',function(){

    angular.forEach(AudioFiles,function(val,key){
      console.log('adding',val);
      let tempMediaObject = new Media(val['url'],function(){
        //mediaSuccess
      },function(){
        //mediaError
      },function(){
        //mediaStatus
      });
      $scope.MediaFiles.push(tempMediaObject);
    });

    console.log($scope.MediaFiles);

  });

  $scope.play = function(index){
    console.log('play this file', $scope.MediaFiles[index]);
    $scope.MediaFiles[index].play();
  };

  $scope.pause = function(index){
    $scope.MediaFiles[index].pause();
    $scope.MediaFiles[index].release();
  };

  $scope.stop  = function(index){
    $scope.MediaFiles[index].stop();
    $scope.MediaFiles[index].release();
  };

})

以及我页面中的以下代码:

<ion-view view-title="Audio">
  <ion-content>
    <ion-list>
      <ion-item  ng-repeat="audio in MediaFiles" type="item-text-wrap">

        <div class="card">
          <div style="white-space: normal;display: block;">File URL: {{audio.src}}</div>
          <button class="button" ng-click="play($index)">Play</button>
          <button class="button" ng-click="pause($index)">Pause</button>
          <button class="button" ng-click="stop($index)">Stop</button>
        </div>

      </ion-item>
    </ion-list>
  </ion-content>
</ion-view>

问题是,当我尝试播放时,它总是从创建的第一个Media对象(sample.aac)播放音频文件。如您所见,我已经控制台记录了当我点击play时应该播放的文件,并且该文件是所选的正确文件,但是实际播放的始终是第一个文件。我也尝试了没有$ scope.MediaFiles [index] .release()调用的方法。这在android上工作正常,但在ios上工作不正常。我正在使用ios 13.2.3的iPhone X进行测试。任何人都有这个问题或知道任何解决方案吗?

0 个答案:

没有答案