あらかじめ決められたURLから曲をダウンロードして、ユーザーが曲を再生、一時停止、停止できるようにするシンプルなメディアプレーヤーアプリを作成しています。今の私の唯一の問題は、ユーザーがダウンロードする前に曲を再生しようとすると、アプリケーションフォースが閉じてしまうことです。
私の最初の本能は、グローバルboolフラグを作成し、ダウンロードサービスがファイルをダウンロードするときにtrueに設定し、play.onclickボタンで再生サービスを実行する前にそのフラグを使用してエラーチェックを行うことです。
したがって、たとえば:
play.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (downloadFlag == true){
Intent intent = new Intent(getApplicationContext(), PlayService.class);
intent.putExtra("key", 0);
intent.putExtra("nkey", 0);
startService(intent);
String artistFirst = url.substring(url.lastIndexOf('/')+1, url.lastIndexOf('_'));
String artistLast = url.substring(url.lastIndexOf('_')+1, url.lastIndexOf('-'));
String song = url.substring(url.lastIndexOf('-')+1, url.lastIndexOf('.'));
tv_artist.setText("Artist: "+artistFirst+" "+artistLast);
tv_song.setText("Song: "+song);
final ImageView album = (ImageView) findViewById(R.id.imageView1);
album.setImageResource(R.drawable.album);
}
}
});
これはこの問題に取り組むための良い方法ですか、それとももっとエレガントな解決策を追求する必要がありますか?
編集::ソリューションが見つかりました
アプリケーションの開始時に、再生ボタンを無効にしてから、ブロードキャストレシーバーで有効にします(ダウンロードが終了するとキャッチします)
Button play = (Button) ((Activity) context).findViewById(R.id.play);
play.setEnabled(true);