

cordovaのmediaプラグインを利用して音楽再生のできるものを作成しようとしていますが、mediaプラグインにおいて、1ファイルの再生時間全体の取得ってできるでしょうか。  
rangeを使って、100％のうち現在再生されているのは何％みたいなのを表示させたいと思っています。


CC BY-SA 3.0
2015-06-09T13:55:50.753
11192
2015-08-19T12:50:32.380
9855
question
monaca cordova
cordovaのmediaプラグイン1ファイルの再生時間全体の取得


メディアプラグインの下記のメソッドを使用すると、全体の時間が分かります。

[code]

    media.getDuration( )
    
[/code]

参考情報  
<http://docs.monaca.mobi/cur/ja/reference/phonegap_34/ja/media/>


CC BY-SA 3.0
2015-06-12T01:12:30.997
11264
2015-06-12T01:12:30.997
7461
11192
answer


user7461 さんも書かれていますが、

演奏中における、現在の演奏位置（時間）は、media.getCurrentPosition() で取得できます。  
全体の長さ（トラック全体の演奏時間）は、media.getDuration() で取得できます。

但し、当方がAndroid環境で確認した限りでは、new Media() の直後に getDuration() を呼び出しても -1 が返され、play()
を実行後に getCurrentPosition() のコールバック内で実行すると正しい値が返されました（私の環境だけなのか、仕様なのかはわかりません。）

何パーセントか？を表示するとしたら、こんな感じでしょうか？

[code]

    var totalTime = null;
    var media = new Media(url, onSuccess, onError);
    
    // ここで media.getDuration() とやると、-1 が返される？
    
    media.play();
    
    setInterval(function(){
        media.getCurrentPosition(function(position){
            if( totalTime == null )
            {
                totalTime = media.getDuration();
            }
            var elapsed = (100*position/totalTime).toFixed(1) + "%";
            document.getElementById('elapsed').innerHTML = elapsed;
        }, function(e){
            console.log("Error getting pos=" + e);
            document.getElementById('elapsed').innerHTML = "Error: " + e;
        });
    }, 1000);
    
    
[/code]


CC BY-SA 3.0
2015-06-20T08:28:47.157
11553
2015-06-20T08:28:47.157
9888
11192
answer