1

私は現在 を持ってlistviewおり、アイテムをクリックすると、新しいウィンドウが表示され、それに関連付けられた曲の再生が開始されpositionます。問題は、戻るボタンを押してに戻りlistview、同じアイテムを押すと、すでに再生されているものの上に音楽が再び再生されることです。とにかくこれを修正して、同じアイテムをクリックしてその曲が再生されているときに、その曲が再生されないようにすることはできますか? ありがとう

4

2 に答える 2

0

You need to use a service to let the music run in the background.

于 2011-07-11T23:11:44.740 に答える
0

音楽を再生するサービスの作成については、この記事をご覧ください。あなたがやろうとしていることのように見えます。

他にできることは、アクティビティの onPause または onStop メソッドが呼び出されたときに音楽を停止する関数を追加することです。その後、非アクティブな音楽再生アクティビティは、Android OS によって適切なタイミングで破棄され、複数の音楽ファイルの再生について心配する必要がなくなります。この方法の欠点は、新しいウィンドウが表示されている間だけ音楽が再生されることです。ウィンドウを変更すると、onPause または onStop メソッドが呼び出されるため停止します。バックグラウンドで音楽を再生したい場合は、サービス テクニックを使用する必要があると思います。

サービスを開始するには、インテントでバインドするか、startService メソッドを使用します。

たとえば、上記のリンク先の記事では、サービスは次の場所で開始されます。

public class MusicDroid extends ListActivity {
    public static final String MEDIA_PATH = new String("/sdcard/");
    private List<String> songs = new ArrayList<String>();
    private MDSInterface mpInterface;

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.songlist);
        this.bindService(new Intent(MusicDroid.this,MDService.class),
            null, mConnection, Context.BIND_AUTO_CREATE); // <- starting service by creating a binding.
    }
}

公式のAndroid サービス apiページでは、サービスの処理方法の概要を説明しています。

于 2011-07-11T23:59:15.387 に答える