2016-03-21 29 views
0

Etkinlikler arasında müzik çalmak istiyorum ve uygulamak için basit bir sınıf kullanıyorum. StartMusic() yöntemini çağırdığımda ve stopMusic() yöntemini çağırdığımda durdurduğunda bu sınıf (BackgroundMusic) MediaPlayer ile müzik başlatır. Onu sadece bir Aktivitede kullandığım zaman mükemmel çalışır. OnCreate çağrıları startMusic() yöntemi ve onPause, stopMusic() yöntemini çağırır ve MediaPlayer doğru şekilde davranır. Sorun başka bir Etkinliğe geçmek istediğimde başlıyor. Müziği durdurmak istediğimde mediaplayer.stop() için bana NullPointerExepction atar. Bu yüzden uygulama, hiç başlamayan bir MediaPlayer'ı durdurmak istediğimi düşünüyor. Her onCreate yönteminde startMusic() yöntemini çağırmayı denedim, ancak müzik tekrar başlıyor ve başka bir Etkinliğe geçtiğimde durmayan ve tekrar başlayan bir müzik çalmak istiyorum. Bunu sınıfta yapmak mümkün mü yoksa Servisi kullanmalı mıyım? Umarım bana bu konuda yardımcı olabilirsiniz.MediaPlayer, Aktifler arasında müzik çalmak

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; 
    } 
} 

Ben BackgroundMusic statik için mediaplayer ayarlarsanız o mükemmel çalışıyor

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(); 
} 
+0

(Arka plan) sesle başa çıkmak için bir ServiceActivity uygulayabilirsiniz. Bu şekilde, MainActivity'inizin “onCreate” ı servisi yeni bir amaç olarak çağırırdı. Servis sesi çalacak ve sesle endişelenmenize gerek kalmadan tüm aktivitelerinizde koşmanız için özgür olacaksınız. Herhangi bir yerde, herhangi bir zamanda, sesi durdurmak isterseniz, basit bir stopService hile yapardı. – statosdotcom

cevap

0

bir etkinlik.

İlgili konular