cordova media插件状态不起作用

时间:2016-08-11 14:33:20

标签: javascript cordova audio media

我想知道音频何时仍在播放,何时停止执行其他操作。这些选项都不适合我。我尝试重现一个相同的文件,但只有在停止的情况下,我会尝试几天,但它仍然无法正常工作

function reproducirAudio(ruta) {
        var ruta = "/android_asset/www/sounds/button-1.mp3";
        $scope.media2 = new Media(ruta, function () {
            $scope.media2.play();

        }, function (b) {
        }, function (a) {
            alert(JSON.stringify(a));
        });

    }

function reproducirAudio(ruta) {
        var ruta = "/android_asset/www/sounds/button-1.mp3";
        $scope.media2 = new Media(ruta, bien,mal,status);
          function bien(){  $scope.media2.play();}
          function mal(){}
          function status(estatus){  console.log("status")}
}

function reproducirAudio(ruta) {
        var ruta = "/android_asset/www/sounds/button-1.mp3";
        $scope.media2 = new Media(ruta, bien,mal,status);
          function bien(){  $scope.media2.play();}
          function mal(){}
          function status(estatus){  alert(status)}
}

function reproducirAudio(ruta) {
        var ruta = "/android_asset/www/sounds/button-1.mp3";
        $scope.media2 = new Media(ruta, bien,mal,getStatusMessage);
          function bien(){  $scope.media2.play();}
          function mal(){}


     function getStatusMessage(status){

     if(status === 0){console.log('Media.MEDIA_NONE');}
         else if(status === 1){console.log('Media.MEDIA_STARTING');}
         else if(status === 2){console.log('Media.MEDIA_RUNNING');}
         else if(status === 3){console.log('Media.MEDIA_PAUSED');}
         else if(status === 4){console.log('Media.MEDIA_STOPPED');}
    }
}

2 个答案:

答案 0 :(得分:0)

我通过创建空白媒体播放器,然后设置媒体来完成此操作。要测试它是否正在播放,只需执行一项检查,测试您的媒体播放器是否为空或未定义。

$scope.media;
$scope.media = new Media("some/media/path.mp3);

if ($scope.media != null) {
    someAction();
}
else {
    otherAction();
}

另一个选择是测试媒体长度是否大于0.

$scope.media.getCurrentPosition(
    //success
    function (position) {
        if (position > 0) {
            console.log("A song is playing!");
        }
    },
    // error
    function () {
        console.log("An error occured!");
    }
);

答案 1 :(得分:0)

终于有效了。我把这个代码和我意识到降级到cordova-media-plugin到1.0.1版本

function reproducirAudioPorBoton(ruta) {
            var audiofile = new Media('file:///android_asset/www/sounds/M.mp3');
            audiofile.play();
            var counter=0;
            var timerDur = setInterval(function() {
                counter = counter + 100;
                if (counter > 2000) {
                    clearInterval(timerDur);
                }
                var dur = audiofile.getDuration();
                if (dur > 0) {
                    clearInterval(timerDur);
                    console.log(dur + " sec");
                }
            }, 100);
        }