ورود

View Full Version : عدم پخش صدا بعد از ریلود کردن اکتیویتی



ghasem110deh
یک شنبه 21 آبان 1396, 17:19 عصر
سلام به همه :-)
دوستان من توی اکتیویتی واسه بعضی از رویدادها صدا گذاشتم، بدون مشکل هم اجرا میشن
مشکل وقتی پیش میاد که کاربر بعد از تموم کردن مرحله بخواد اون مرحله رو دوباره تکرار کنه !!! هیچ مشکلی نیست فقط صداها دیگه پخش نمیشن
با کد زیر اکتیویتی رو ریلود میکنم :

// Intent intent = getIntent();
// finish();
// startActivity(intent);
this.recreate();

تشکر

ghasem110deh
دوشنبه 22 آبان 1396, 16:01 عصر
دوستان کسی نمیدونه مشکل از کجاس ؟
این کلاس پخش صداس :
public class MusicManager {
private MediaPlayer mediaPlayer;
private static MusicManager manager = null;


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


public void initMediaPlayer(Context context, int musicId, float lVolume, float rVolume, boolean looping){
mediaPlayer = MediaPlayer.create(context, musicId);
mediaPlayer.setVolume(lVolume, rVolume);
mediaPlayer.setLooping(looping);
}


// public void onCompleted(){
// mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
// @Override
// public void onCompletion(MediaPlayer mp) {
// mediaPlayer.stop();
// }
// });
// }


public void startPlaying(){
mediaPlayer.start();
}


public void stopPlaying(){
mediaPlayer.stop();
}
}

اینم توی اکتیویتی :
private void playMusic() {
MusicManager.getInstance().initMediaPlayer(this, R.raw.music, 40, 40, true);
MusicManager.getInstance().startPlaying();
}


الان وقتی وارد اکتیویتی بعدی هم بشی دیگه صداها پخش نمیشن !!!

ghasem110deh
دوشنبه 22 آبان 1396, 16:33 عصر
دوستان مشکل با این تیکه کد حل شد (مشخص هم هست چیه دیگه)
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.stop();
mp.reset();
}
});