I developed an app that plays audio in the background. The problem I have is that when the screen orientation changes the audio stops for a few milliseconds and then continues. Here is the relevant code:
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
private Integer images[]={R.drawable.pic1, R.drawable.pic2, R.drawable.pic3, R.drawable.pic4,R.drawable.pic5, R.drawable.pic6,....
private int currImage=0;
MediaPlayer mp;
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("currImageSaved", currImage);
outState.putInt("time", (int)mp.getCurrentPosition());
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
int last_pos = savedInstanceState.getInt("time");
mp.seekTo(last_pos);
mp.start();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null)
{
currImage = savedInstanceState.getInt("currImageSaved", 0);
}
mp=MediaPlayer.create(this,R.raw.shlomoimagine);
if (getResources().getConfiguration().orientation ==
Configuration.ORIENTATION_PORTRAIT) {
setContentView(R.layout.main_p);
} else {
setContentView(R.layout.main_l);
}
initializeImageSwitcher();
setInitialImage();
setImageRotateListener();
}
@Override
protected void onPause() {
super.onPause();
mp.pause();
}
private void initializeImageSwitcher(){.....
......}
private void setImageRotateListener() {......
....}
private void setInitialImage() {....
....}
private void setCurrentImage() {....
...}
@Override
protected void onResume() {
super.onResume();
mp.start();
}
...
}