7

私のアプリには、タイマーとして機能するシークバーとシークバーの両端にある 2 つのテキスト ビューを備えたメディア プレーヤーがあり、このプレーヤーで .wav ファイルを再生します。また、同じアクティビティに editext があり、再生中に編集する必要があります。私の問題は、再生が進行中で、編集テキストに触れている場合、ソフトキーボードが表示され、UI が動かなくなることです。これは、シークバーの更新とタイマーの更新が動かなくなることを意味します。ハンドラーを使用してタイマータスクを使用して更新しています。誰でもこの問題を理解するのに役立ちますか。ソフトキーボードが表示されているときに UI が動かなくなるのはなぜですか?

タイマータスクの使用の問題になると推測して、メディアプレーヤーを更新する他の多くの方法を試しました。

  • サービスを使用して mediaplyer を再生し、ハンドラーを使用して UI に更新します。
  • 進行状況をメッセージとして送信することにより、スレッドとハンドラーのみを使用します。
  • Assynctask を使用し、runOnUIthread で更新します。

これらすべてのケースで、ソフトキーボードが他のすべての Textviews を表示し、シークバーの更新が停止します。この問題から抜け出すのを手伝ってください。完全に立ち往生しています:-(。この問題を解決する他の方法はありますか。

4

1 に答える 1

3

Mediaplayers の現在の位置を使用して UI を更新しようとしたため、Mediaplayer UI が動かなくなりました。そのため、ソフトキーボードが表示され、UI が mediaplayer に同時にアクセスしているときに、mediplayer インスタンスが重いため、UI がスタックしていました。そのため、再生中にパーセンテージを使用して UI を更新する別のアプローチを試みたので、メディアプレーヤーの現在の位置にアクセスする必要はありません。このロジックを実装したところ、この問題は解決しました。

于 2013-09-17T03:22:10.933 に答える