3

私はこのサイトがとても気に入っています。なぜなら、多くの便利なソリューションが私を助けてくれるからです。特に私は Android プログラミングの初心者で、これが私の最初の質問なので、この素晴らしいコミュニティから助けを得られることを願っています。

問題: 私は自分のアプリでビデオを再生し、ユーザーが画面の向きを変えたときに横向きでフルスクリーンで再生するようにしたので、seekTo() と getCurrentPosition() を使用して同じポイントからビデオを再起動したい - しかし、ビデオが再生される問題位置の数秒後、ビデオは同じ時点をシークしますが、再生を開始すると何秒も追加されます。

私のコード:

    //initialise everything  
protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        v = (VideoView) findViewById(R.id.videoView1);
                v.setVideoPath(dir + videoName + ".3gp");
                v.setMediaController(new MediaController(this));
                if (savedInstanceState == null){
                    v.start();  
                }
                else {
                    playingTime = savedInstanceState.getInt("restartTime", 0);
                    v.seekTo(playingTime);
                }
       }

@Override
protected void onSaveInstanceState(Bundle outState) {
    // TODO Auto-generated method stub
    super.onSaveInstanceState(outState);
    if (file.exists()){
        playingTime = v.getCurrentPosition();
        v.stopPlayback();
        outState.putInt("restartTime", playingTime);
    }
}

私はこのような多くの解決策を試し ます ランドスケープモードに変更しながらビデオを再生し続ける方法 Android

Galaxy Nexusを使用してアプリをテストしています..ヒントをいただければ幸いです。下手な英語で申し訳ありませんが、どうもありがとうございました。

4

1 に答える 1

5

あなたの活動では、すべてを正常に保ちます。要約すると、アクティビティが再作成されたときに位置を保存することになります。1 つのアプローチを次に示します。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //initialise everything


    //finally
    if(savedInstanceState!=null) {
        int seekValue = savedInstanceState.getInt("where");
        //now seekTo(seekValue)
    }
}
@Override
    protected void onSaveInstanceState(Bundle outState) {
        int seekValue; //set this to the current position;
        outState.putInt("where", seekValue);
        super.onSaveInstanceState(outState);
    }
}
于 2012-09-22T17:49:15.323 に答える