0

アプリケーション全体で流れるバックグラウンド サウンドを再生しようとしています。ここでは 3 つのアクティビティがあり、MAIN アクティビティが起動するとサウンドが開始されます。私はこれらを達成したいと考えています: 1) アクティビティがロードされても、アプリ全体で継続的に bg サウンドを再生します。
2) ユーザーがサウンドオフボタンをクリックしたときにサウンドをオフにします。3) アプリ終了時に音を止める。

これまでのところ、このコードでサウンドを開始しようとしましたが、アプリを閉じても再生し続けます。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    audioPlayer();
}

    boolean isPlayingSound = true;
public void onClickSound(View view) {
    final Button btn1 = (Button) findViewById(R.id.button3);

    if(isPlayingSound){ 
        btn1.setBackgroundResource(R.drawable.sound00);
        isPlayingSound=false;
        audioPlayer(false);/*Sound doesn't stops here*/
    } 
    else{ 
        btn1.setBackgroundResource(R.drawable.sound11);
        isPlayingSound=true;
        audioPlayer(true);
    }     
}

public void audioPlayer(boolean status){  

    MediaPlayer mp = MediaPlayer.create(this, R.raw.bg);
    if(status) {
        mp.start();
    }
    else {
        mp.stop();
    }
}

誰でも見て、ここで私を助けてくれませんか。手伝ってくれてありがとう!!

4

1 に答える 1

0

サービスに移動してオーディオを再生できます。ASOP音楽コードを参照するか、見ることができます

開始されたサービスへのバインド

サービス ドキュメントで説明されているように、開始済みでバインド済みのサービスを作成できます。つまり、startService() を呼び出すことでサービスを開始できます。これにより、サービスを無期限に実行できるようになり、bindService() を呼び出すことでクライアントがサービスにバインドできるようになります。

サービスの開始とバインドを許可すると、サービスが開始されたときに、すべてのクライアントがバインド解除されても、システムはサービスを破棄しません。代わりに、stopSelf() または stopService() を呼び出して、サービスを明示的に停止する必要があります。

于 2013-05-21T06:08:40.790 に答える