1

私は3つの活動をしています。このすべての活動に 1 つの BGM を流したいと思っています。私はこれを可能にしました。これを行う。

アクティビティ 1:

bgmp = MediaPlayer.create(this, R.raw.menu);
bgmp.setLooping(true);
bgmp.start();

これにより、私の音楽は 3 番目のアクティビティまで再生されます。アクティビティ 3 で。4 番目のアクティビティに行くときに別の BGM が再生されるため、この BGM を停止する必要があります。1 番目のアクティビティで作成された 3 番目のアクティビティで音楽を停止するにはどうすればよいですか。何か案は?ありがとう!

4

6 に答える 6

3

必須パラメーターを使用して共通クラスでメソッドを定義し、そのメソッドをアクティビティで使用します。

public class CommonMethod {
public static MediaPlayer player;
    public static void SoundPlayer(Context ctx,int raw_id){
            player = MediaPlayer.create(ctx, raw_id);
            player.setLooping(false); // Set looping
            player.setVolume(100, 100);

            //player.release();
             player.start();
        }
}

3 番目のアクティビティ内で、停止メディアのコードを作成します。

CommonMethod.player.stop();

于 2013-02-06T12:25:53.953 に答える
1

サウンドを再生するサービスを作成し、すべてのプレーヤー コードをサービスに移動します。

その後、アクティビティをこのサービスにバインドし、音楽プレーヤーを制御して (次の再生、戻る、一時停止、停止など) 機能を実行します。

于 2013-02-06T12:29:49.373 に答える
1

シングルトン クラスを作成し、音楽再生コードを追加して停止および開始し、そのシングルトン クラスを 3 つのアクティビティすべてで使用します。

public class MusicManager {

    private static MusicManager refrence = null;

    public static MusicManager getInstance(){
        if(refrence == null){
            refrence = new MusicManager ();
        }
        return refrence;
    }

}

このシングルトン クラスに public メソッドを追加して、次のように音楽を開始および停止します

public void initalizeMediaPlayer(Context context, int musicId){

// add initalization of media player in it and loop it 
}

public void startPlaying(){
// add code to start playing music
}

public void stopPlaying(){
// add code to stop playing music
}

そして、このクラスを使用するには、このように使用します

MusicManager.getInstance().initalizeMediaPlayer(this, R.raw.menu); // to initalize of media player
MusicManager.getInstance().startPlaying();// to start playing music
MusicManager.getInstance().stopPlaying(); // to stop playing music

これが役立つかどうか教えてください。serviceまた、このタスクをバックグラウンドで実行するために使用することもできますservice。コード内でいつでも開始serviceおよび停止できますservice

于 2013-02-06T12:37:25.307 に答える
0

バックグラウンドで実行されるサービスを開始し、サービスで音楽を再生するためのコードを記述する必要があります。

于 2013-02-06T12:33:31.747 に答える
0

player.stop()次のアクティビティに移動するボタン内に関数を配置するだけです。

example: @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                player.stop();
                Intent i=new Intent(iotmain.this,MainActivity.class);
                startActivity(i);
                Toast.makeText(getBaseContext(),"Chatting mode ON",Toast.LENGTH_SHORT).show();
            }
于 2021-05-23T10:51:21.983 に答える