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 のタイミングが異なることを意味します。
私の質問はウェイですか?どうすれば解決できますか?