2

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を使用しようとしましたが、失敗しました。

どうすればそれを機能させることができますか?

4

1 に答える 1