我在旋转屏幕后将Media Player恢复到之前的状态时出现问题。我一直试图效仿很多例子,但他们都不适合我。
例如,我一直试图:
protected void onSaveInstanceState(Bundle outState) {
outState.putInt("position",mp.getCurrentPosition());
super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
if(savedInstanceState!= null){
int position = savedInstanceState.getInt("position");
mp.seekTo(position);
}
super.onRestoreInstanceState(savedInstanceState);
}
然而,它成功完成,然后在run()
之后立即触发的以下部分(onRestoreInstanceState()
方法)中,我在尝试IllegalStateException
时尝试getDuration()
{1}}方法:
private Runnable mUpdateTimeTask = new Runnable() {
@Override
public void run() {
long totalDuration = mp.getDuration();
long currentDuration = mp.getCurrentPosition();
songCurrentDurationLabel.setText(utilities.milisecondsToString(currentDuration));
songTotalDurationLabel.setText(utilities.milisecondsToString(totalDuration));
//ProgressBar
songProgressBar.setProgress(utilities.getProgressPercentage(currentDuration, totalDuration));
//invoke that every 100ms
mHandler.postDelayed(this, 100);
}
};
我该怎么做才能让它发挥作用?
答案 0 :(得分:0)
当屏幕旋转时,您的MediaPlayer实例可能会被终止,因此您需要再次准备MediaPlayer,然后才能调用seekTo方法。
尝试发布您的MediaPlayer准备代码,以便更轻松地进行故障排除。
答案 1 :(得分:0)
如果您的要求是阻止在更改方向期间重新创建活动,则必须告诉您的活动自行处理方向更改。
您可以通过向m.prop
元素添加android:configChanges
属性来实现此目的。
<activity>