J'ai développé une application qui lit l'audio en arrière-plan. Le problème que j'ai est que lorsque l'orientation de l'écran change l'audio s'arrête pendant quelques millisecondes et continue ensuite. Voici le code approprié:Comment puis-je éviter l'arrêt de l'audio (pendant quelques millisecondes) lors de l'orientation de l'écran?
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();
}
...
}
Hey! Avez-vous vérifié ce? –
Merci, mais je ne comprends pas où ajouter l'instruction if (mp! = Null && .... –
Devrais-je supprimer le onRestoreInstanceState qui gère le mp? Et le onSaveInstanceState également? –