【发布时间】:2015-12-26 15:19:20
【问题描述】:
我在旋转屏幕后将媒体播放器恢复到之前的状态时遇到问题。我一直在尝试遵循许多示例,但它们都不适合我。
例如,我一直在尝试:
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);
}
然而,它成功完成,然后在onRestoreInstanceState() 之后立即触发的以下部分(run() 方法)中,我在尝试调用getDuration() 方法时得到IllegalStateException:
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);
}
};
我应该怎么做才能让它工作?
【问题讨论】:
标签: android rotation android-mediaplayer media