アクティビティ全体で音楽を再生したいと思います。単純なクラスを使用して実装しています。このクラス(BackgroundMusic)は、startMusic()メソッドを呼び出すとMediaPlayerで音楽を開始し、stopMusic()メソッドを呼び出すと停止します。 1つのアクティビティでのみ使用すると完全に機能します。 OnCreateはstartMusic()メソッドを呼び出し、onPauseはstopMusic()メソッドを呼び出し、MediaPlayerは正しい方法で動作します。問題は別のアクティビティに移動したいときに始まります。音楽を止めたいときは、mediaplayer.stop()のNullPointerExepctionがスローされます。だから、アプリケーションは、私がMediaPlayerを起動したことを止めたいと思っているようです。すべてのonCreateメソッドでstartMusic()メソッドを呼び出そうとしましたが、何度も何度も音楽が始まり、もう1つのアクティビティに移動したときに停止したり再開したりする1つの音楽しか再生しません。クラスでそれを行うことは可能でしょうか、サービスを使わなければなりませんか?私はクラスでそれを手伝ってくれることを願っています。MediaPlayerでアクティビティ間で音楽を再生する
BackgroundMusic
public void startMusic() {
mediaPlayer1 = MediaPlayer.create(context, R.raw.zenenegy);
if(palya <= 5 || palya > 15){
mediaPlayer1.start();
mediaPlayer1.setVolume(0.2f, 0.2f);
mediaPlayer1.setLooping(true);
play = true;
}
}
public void stopMusic(){
if(play){
mediaPlayer1.stop();
mediaPlayer1.reset();
mediaPlayer1.release();
mediaPlayer1 = null;
play = false;
}
}
活動
BackgroundMusic bm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fomenu);
bm = new BackgroundMusic(mentes,this);
if(sounds){
bm.startMusic();
}
}
@Override
protected void onPause() {
if(sounds){
bm.stopMusic();
}
super.onPause();
}
(背景)サウンドを処理するためにServiceActivityを実装できます。このように、あなたのMainActivityの 'onCreate'は新しい意図としてサービスを呼び出します。サービスは音を演奏し、あなたは音で心配することなく、あなたのすべての活動によって自由に走ることができます。どの場所でも、いつでも、音を止めたいなら、簡単なstopServiceがそのトリックを行います。 – statosdotcom