1

あらかじめ決められた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);
4

1 に答える 1

0

曲がダウンロードされた後にリスナーを追加します(同じ場所でフラグをtrueに設定します)。または、ボタンを無効にして、曲のダウンロード時に有効にします。そうすれば、フラグを使用する必要はありません。

play.setEnabled(false)
//...
play.setEnabled(true)
于 2012-06-16T23:02:31.160 に答える