【问题标题】:Screen rotation, getDuration(), illegalstateexception屏幕旋转、getDuration()、非法状态异常
【发布时间】: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


    【解决方案1】:

    您的 MediaPlayer instate 可能会在屏幕旋转时被杀死,因此您需要再次准备 MediaPlayer,然后才能调用 seekTo 方法。

    尝试发布您的 MediaPlayer 准备代码,以便于故障排除。

    【讨论】:

      【解决方案2】:

      如果您的要求是防止在方向更改期间重新创建您的 Activity,您必须告诉您的 Activity 自行处理方向更改。

      您可以通过将android:configChanges 属性添加到您的<activity> 元素来实现此目的。

      <activity android:name=".MediaPlayerActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:label="@string/app_name">
      

      【讨论】:

        猜你喜欢
        • 2013-01-13
        • 1970-01-01
        • 1970-01-01
        • 2011-01-31
        • 1970-01-01
        • 2015-06-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多