停止后离子播放媒体

时间:2017-01-13 10:55:58

标签: cordova ionic-framework media

我尝试在Ionic1工作并在这里遇到一个令人困惑的问题:

我想在另一个媒体停止之后播放媒体(例如mp3)。 说到:有歌曲列表。如果正在运行 - 单击另一个 - 然后停止当前并启动新的...

但是我错过了一些东西...... 这是代码:

提前感谢任何提示。

!声音只是一个带有title,url和sta状态的对象。 !

    var currentSound, currentMedia;
    $scope.play = function(sound) {

    if(currentMedia && currentSound && currentSound.sta == 1){
      currentMedia.stop();
      currentSound.sta = 0;

      if(sound.title === currentSound.title) return;
    }

    var mediaUrl = sound.url;
    if(device.platform.indexOf("iOS") >= 0) {
      mediaUrl = "../Library/NoCloud/" + mediaUrl.split("/").pop();
    }

    currentSound = sound;
    currentMedia = new Media(mediaUrl,
        function() {
          currentMedia.release();
          currentSound.sta = 0;
        }, function(err) {
          console.log("media err", err);
        }, function (sta) {
          if(sta == Media.MEDIA_RUNNING)
          {
            currentSound.sta = 1;
          }
          else
          {
            currentSound.sta = 0;
          }
        });

    currentMedia.play();
    currentSound.sta = 1;

  }

1 个答案:

答案 0 :(得分:0)

好的 - 我找到了一个解决方案......即使我不理解它。 (我对你的智慧持开放态度)

解决方案:在停止和启动媒体的情况下,只需递归调用该函数。

var currentSound,currentMedia;   $ scope.play = function(sound){

if(currentMedia && currentSound && currentSound.sta == 1){
  currentMedia.stop();
  currentSound.sta = 0;

  if(sound.title === currentSound.title)
  {
    return;
  }
  else
  {
    $scope.play(sound);
  }
}

var mediaUrl = sound.url;
if(device.platform.indexOf("iOS") >= 0) {
  mediaUrl = "../Library/NoCloud/" + mediaUrl.split("/").pop();
}

currentSound = sound;
currentMedia = new Media(mediaUrl,
    function() {
      currentMedia.release();
      currentSound.sta = 0;

    }, function(err) {
      console.log("media err", err);

    }, function (sta) {

      if(sta == Media.MEDIA_RUNNING)
      {
        currentSound.sta = 1;
      }
      else
      {
        currentSound.sta = 0;
      }
    });

currentMedia.play();
currentSound.sta = 1;

}