音楽ストリーミングアプリを作成しようとしています。 これまでのところうまく動作します。 私は無限のストリームを準備するためにTextViewはボタン内から描画しません。
便利なメソッドを使用しています(24時間365日のmp3ストリーム)。 私はstartPlaying()メソッドにきちんと入れられているこの呼び出しで数秒間ハングします。 ボタンは、ストリームの再生が開始されるまでクリックされていないことを示しています。そのため、最初にユーザーはボタンをタップしたのか不足しているのか疑問に思っています。 「Wait ...」や「Buffering」などのボタンの横にあるTextViewラベルを更新してから、ストリームの開始後にクリアして、ボタンが押されたことをユーザーが知っていることを確認します。 これをデバッグでステップ実行しても、onClickが終了するまでラベルは更新されません。私は、ラベルのテキストをクリアする最後の行をコメントすることができ、 "Buffering ..."に設定されているのを見ることができます。しかし、それがonClickを終了した後にのみ。これはメディアプレーヤーのcreate()メソッドを使用する際の制限ですか?
final Button startbutton = (Button) findViewById(R.id.Button01);
this.tvBuffering = (TextView) findViewById(R.id.tvBuffering);
startbutton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
tvBuffering.setText("Buffering...");
//do something like invalidate() here??
startPlaying(); //blocks here for a few seconds to buffer then plays.
tvBuffering.setText(" "); //clear the text since it's playing by now.
}
});
恐ろしい答え!感謝万円! –