5

mp3 ファイルがあり、アプリケーションはその mp3 ファイルの選択された時間を探して、そこから再生を開始する必要があります。

このメソッドで文字列時間を int 値に変換します

private static int convert(String time) {
    int quoteInd = time.indexOf(":");
    int pointInd = time.indexOf(".");

    int min = Integer.valueOf(time.substring(0, quoteInd));
    int sec = Integer.valueOf(time.substring(++quoteInd, pointInd));
    int mil = Integer.valueOf(time.substring(++pointInd, time.length()));

    return (((min * 60) + sec) * 1000) + mil;
} 

注: 私の刺し傷はこのようなもの5:12.201で、5 分 12 秒 201 ミリ秒を意味します。

これらの時間をMP3 Audio Editorアプリケーションから取得し(Windows用)、アプリケーションでテーマを確認しましたKMPlayer(Windows用)。そして、これらの時間は両方とも正しかった。

しかし、私のアプリでは、MediaPlayerその時間までシークすると、選択した位置からオーディオが開始されません。 (時間は正確ですが音は違います。)


MediaPlayerはその時刻を正しくシークしていないと思いました。そのため、再生前に呼び出して現在位置を確認getCurrentPosition()しましたが、戻り値とシーク値は同じでした。

私はそれについて何も考えていません。


編集:

私の問題は時間変換ではありません。

私はそこに正しく変換してシークしましたが、その時点で予期していなかった何かが再生されます。

これは、KMPlayer と Android のタイミングが異なることを意味します。

私の質問はウェイですか?どうすれば解決できますか?

4

2 に答える 2