私は、VideoViewとMediaPlayerを使ってAssetsからビデオを再生するのに苦労しています。Xamarin android:VideoViewはSurfaceCreatedを呼び出さない
ビルドバージョン:アンドロイド6.0.1マシュマロAPI 23
デバッグ装置:NVIDIA SHIELDタブレットK1
問題:機能 "SurfaceCreatedは" と呼ばれることはありませんので、私のVideoViewは、表面を作成しないように見えますデバッグ中に
実際の結果:アクティビティが読み込まれると、画面がグレーになり、正しいビデオの音声が聞こえます。ここで
は私のコードです:public class VideoTestActivity : Activity, MediaPlayer.IOnPreparedListener, ISurfaceHolderCallback
{
MediaPlayer player;
VideoView _myVideoView;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.VideoTest);
player = new MediaPlayer();
_myVideoView = FindViewById<VideoView>(Resource.Id.video);
_myVideoView.Start();
_myVideoView.SetZOrderOnTop(true); // tried from Q&A, display a grey screen
var descriptor = Assets.OpenFd("video.mp4");// the data is correctly loaded
player.SetDataSource(descriptor.FileDescriptor, descriptor.StartOffset, descriptor.Length);
player.Prepare();
player.Start();
}
public void OnPrepared(MediaPlayer mp)
{
throw new NotImplementedException();
}
public void SurfaceChanged(ISurfaceHolder holder, [GeneratedEnum] Format format, int width, int height)
{
throw new NotImplementedException();
}
public void SurfaceCreated(ISurfaceHolder holder)
{
player.SetDisplay(_myVideoView.Holder); // never called
}
public void SurfaceDestroyed(ISurfaceHolder holder)
{
throw new NotImplementedException();
}
}
そして、ここで私のAXMLです:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:p1="http://schemas.android.com/apk/res/android"
p1:minWidth="25px"
p1:minHeight="25px"
p1:layout_width="match_parent"
p1:layout_height="match_parent"
p1:id="@+id/relativeLayout1">
<VideoView
p1:layout_width="fill_parent"
p1:layout_height="fill_parent"
p1:id="@+id/video"/>
</RelativeLayout>
私が試してみました何/確認:
- 私VideoViewは異なるwidht /高さを持っています0
- ディスクリプタが正しくロードされている
- SetZOrderOnTop()(スタート後に呼び出されている)
- videoViewが正しくFindViewById(によってロードされている)
私はまだanwserを探していますが、私はすべてのポスト関連のを確認しているので、 stackOverflow、私はこのポストを開いた。
あなたの時間と知識をお寄せいただきありがとうございます。