Ich möchte Musik über Activities abspielen und verwende eine einfache Klasse, um es zu implementieren. Diese Klasse (BackgroundMusic) startet die Musik mit dem MediaPlayer, wenn ich die startMusic() -Methode aufruft, und stoppt sie beim Aufruf der stopMusic() -Methode. Wenn ich es nur in einer Aktivität benutze, funktioniert es perfekt. OnCreate ruft startMusic() -Methode auf und onPause ruft stopMusic() -Methode auf, und der MediaPlayer verhält sich auf die richtige Weise. Das Problem beginnt, wenn ich zu einer anderen Aktivität wechseln möchte. Wenn ich die Musik stoppen möchte, wird mir NullPointerExeption für den mediaplayer.stop() angezeigt. Es sieht also so aus, als ob die App denkt, dass ich einen nie gestarteten MediaPlayer stoppen möchte. Ich habe versucht, die startMusic() -Methode in jeder onCreate-Methode aufzurufen, aber die Musik startet immer wieder und ich möchte nur eine Musik wiedergeben, die nicht stoppt und erneut startet, wenn ich zu einer anderen Aktivität übergehe. Kann ich das mit der Klasse machen oder muss ich den Service nutzen? Ich hoffe du kannst mir mit dem Unterricht helfen.MediaPlayer zum Abspielen von Musik über Activites
Untermalung
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;
}
}
Eine Aktivität
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();
}
Sie könnten eine ServiceActivity implementieren, um mit dem (Hintergrund-) Sound umzugehen. Auf diese Weise würde der 'onCreate' Ihrer MainActivity den Dienst als eine neue Absicht bezeichnen. Der Service würde den Ton spielen und Sie wären frei, um bei all Ihren Aktivitäten zu laufen, ohne sich um den Klang kümmern zu müssen. An jedem Ort, zu jeder Zeit, wenn Sie Ton stoppen möchten, würde ein einfacher StopService den Trick machen. – statosdotcom