メディア プレーヤーを使用して、1 つのアクティビティでオーディオを作成しました。開始、一時停止、再開も適切に実行しましたが、横向きまたは縦向きモードで画面を回転させると、曲が 2 回再生されます。
これが私のコードです:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.audio);
init();
prefs = PreferenceManager.getDefaultSharedPreferences(this);
final SharedPreferences.Editor prefsEdit = prefs.edit();
mp = MediaPlayer.create(Audio_Activity.this, R.raw.subhanallah);
Log.e("Song is playing", "in Mediya Player ");
mp.setLooping(false);
mp.start();
System.out.println("Media Plyer Is Start !!!");
prefsEdit.putBoolean("mediaplaying", true);
prefsEdit.commit();
btnChapter.setEnabled(false);
System.out.println("B4 button Click!!!!");
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
@Override
public void onPause() {
super.onPause();
SharedPreferences.Editor prefsEdit = prefs.edit();
boolean isPlaying = prefs.getBoolean("mediaplaying", false);
if (isPlaying)
{
mp.pause();
int position = mp.getCurrentPosition();
Log.e("Current ", "Position -> " + position);
prefsEdit.putInt("mediaPosition", position);
prefsEdit.commit();
}
}
@Override
protected void onResume() {
super.onResume();
mp.start();
boolean isPlaying = prefs.getBoolean("mediaplaying", false);
if (isPlaying) {
int position = prefs.getInt("mediaPosition", 0);
mp.seekTo(position);
// mp.start();
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
if (mp != null) {
if (mp.isPlaying()) {
mp.stop();
}
}
finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
}