简体   繁体   English

cordova媒体插件状态不起作用

[英]cordova media plugin status is not working

I want to know when the audio is still playing , and when it stopped to perform other actions . 我想知道何时仍在播放音频,以及何时停止执行其他操作。 None of these options works for me. 这些选项都不适合我。 I tried for reproduce a same file, but only if is stopped, I try for a few days, but it still not work 我尝试重现相同的文件,但只有停止了,我尝试了几天,但仍然无法正常工作

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

I have done this by creating a blank media player, then later setting the media. 为此,我创建了一个空白媒体播放器,然后再设置媒体。 To test if it is playing just perform a check that tests if your media player is null or undefined. 要测试它是否正在播放,只需执行一项检查,以测试您的媒体播放器是否为null或未定义。

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

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

Another option is to test if the media length is greater than 0. 另一种选择是测试介质长度是否大于0。

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

finally it worked . 终于成功了。 I put this code and i realize a downgrade to cordova-media-plugin to 1.0.1 version 我放了这段代码,我意识到降级到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);
        }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM