VideoView を含む単純なレイアウトがあります。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/black"
android:gravity="center" >
<VideoView
android:id="@+id/videoPlayer"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</RelativeLayout>
このActivity
レイアウトを使用する はFragment
、VideoView を開始するために を作成します
public class VideoPlayerActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video_player);
createNewWorkerFragment();
}
private void createNewWorkerFragment() {
FragmentManager fragmentManager = getFragmentManager();
VideoPlayerActivityWorkerFragment workerFragment = (VideoPlayerActivityWorkerFragment)fragmentManager.findFragmentByTag(VideoPlayerActivityWorkerFragment.Name);
if (workerFragment == null) {
workerFragment = new VideoPlayerActivityWorkerFragment();
fragmentManager.beginTransaction()
.add(workerFragment, VideoPlayerActivityWorkerFragment.Name)
.commit();
}
}
}
は次のVideoPlayerActivityWorkerFragment
とおりです。
public class VideoPlayerActivityWorkerFragment extends Fragment {
public static String Name = "VideoPlayerActivityWorker";
private VideoView mVideoPlayer;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
mVideoPlayer = (VideoView) mActivity.findViewById(R.id.videoPlayer);
mVideoPlayer.setVideoPath(mActivity.getIntent().getExtras().getString("path"));
MediaController controller = new MediaController(mActivity);
controller.setAnchorView(mVideoPlayer);
mVideoPlayer.setMediaController(controller);
mVideoPlayer.requestFocus();
mVideoPlayer.start();
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mActivity = activity;
}
@Override
public void onDetach() {
super.onDetach();
mActivity = null;
}
}
これは私が抱えている問題です。VideoPlayerActivity
開始VideoPlayerActivityWorkerFragment
が作成され、VideoView
再生が開始されますが、デバイスを回転させるとビデオが停止して再生されず、全体View
がレイアウトから消えてしまいます。はプレイし続けるとsetRetainInstance(true);
思っていたので。VideoView
誰かが私が間違っていることを教えてもらえますか? 私はこのパターンを他の場所で ( ではなくVideoView
) 使用しており、回転を正常に行うことができます。
または同様の方法を使用したくありません。向きの変更をsandroid:configChanges="keyboardHidden|orientation|screenSize"
で処理したいと思います。Fragment
よろしくお願いいたします。
編集
それが機能するため、私が行ったソリューションを選択することになりました。ビデオビューとコントローラーは、onCreateView が呼び出されるたびに再作成する必要があり、再生位置は onResume で設定し、onPause で記録する必要があります。ただし、回転中の再生は途切れ途切れです。解決策は最適ではありませんが、機能します。