私はベテランの開発者ですが、Android 開発の初心者です。Android アプリでビデオビューを取得して Web からビデオを表示しようとして立ち往生しています。フラグメントを開始すると、progressDialog の読み込み画面が白い背景で表示されるだけです。デバイスの向きを縦向きから横向きに変更すると、すぐにビデオの再生が開始されます。これは、単にレイアウト設定が間違っていることを示唆しています。しかし、最初に横向きで開始すると、ビデオも再生されません。縦向きに切り替えてから横向きに戻すと再生されます。これは非常に奇妙な動作です。
私はこの問題を調査しようとしましたが、Android デバイスでのビデオの再生は、ほとんどの Android 開発者にとって大きな問題であることがわかりました。このトピックに関しては、Google Developer API ドキュメントでさえ不完全なようです。以下は私のコードです。誰かが私が欠けているものを見ることができるかもしれません。
VideoFragment.java
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
video = (VideoView) getView().findViewById(R.id.standardVideoView);
getActivity().getWindow().setFormat(PixelFormat.TRANSLUCENT);
MediaController mediaController = new MediaController(getActivity());
mediaController.setMediaPlayer(video);
video.setMediaController(mediaController);
video.setVideoURI(Uri.parse("http://<PRIVATE DOMAIN>.com/KLFY_20130806112335457AB.mp4"));
video.requestFocus();
video.start(); // this is called successfully every time the fragment is created
progressDialog = ProgressDialog.show(getActivity(), "", "Buffering video...", true);
progressDialog.setCancelable(true);
video.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
{
// this event is only raised after the device changes to landscape from portrait
public void onPrepared(MediaPlayer mp)
{
Log.i("DEBUGGING", "VIDEO PREPARED");
progressDialog.dismiss();
}
});
}
video_fragment.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/videoViewLayout"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:background="#000000">
<VideoView
android:id="@+id/standardVideoView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center" />
</LinearLayout>
事前に助けてくれてありがとう!