【发布时间】:2017-07-14 16:13:40
【问题描述】:
我开发了一个在后台播放音频的应用。我遇到的问题是,当屏幕方向改变时,音频会停止几毫秒,然后继续。以下是相关代码:
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();
}
...
}
【问题讨论】:
-
嘿!你检查过这个 stackoverflow.com/questions/17917994/…> 吗?
-
谢谢,但我不知道在哪里添加 if(mp!=null &&.... 语句。
-
我应该删除处理 mp 的 onRestoreInstanceState 吗?还有 onSaveInstanceState 吗?
-
明显的选择是使用服务并将媒体播放器放在那里..
-
嗨,Selvin,您能否给我更多详细信息...或相关信息的链接
标签: android audio restore screen-orientation