MediaPlayerが事前に録音されたテキストのサウンドを再生するときに、TextViewでテキストを強調表示したいと思います。(カラオケのように)今のところ、音の最初のテキストはカバーせず、音の最後のテキストをすべてカバーしたいと思います。(強調表示されたテキストはプログレスバーのように見えるはずです。)
MediaPlayerオブジェクトのメソッドを試しisPlaying()
、テキストのインデックスを取得するために、パーセンテージを計算しました。
私のコードは以下の通りです。
while(mediaPlayer.isPlaying())
{
int percentage = mediaPlayer.getCurrentPosition() / mediaPlayer.getDuration() * 100;
int end = text.length() * percentage / 100;
story.setText("Hello world!", BufferType.SPANNABLE);
Spannable span = new SpannableString(story.getText());
text = story.getText().toString();
span.setSpan(new BackgroundColorSpan(0xFF00FF00), 0, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
story.setText(span);
}
アプリがフリーズするため、これがスレッドをブロックしているようです。AsyncTaskを使用しようとしましたが、失敗しました。
どうすればそれを機能させることができますか?