Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin android:VideoView不调用SurfaceCreated_Android_User Interface_Video_Xamarin - Fatal编程技术网

Xamarin android:VideoView不调用SurfaceCreated

Xamarin android:VideoView不调用SurfaceCreated,android,user-interface,video,xamarin,Android,User Interface,Video,Xamarin,我正努力用VideoView和MediaPlayer播放来自资产的视频 构建版本:安卓6.0.1棉花糖API 23 调试设备:NVIDIA屏蔽板K1 问题:我的VideoView似乎没有创建曲面,因为在调试期间从未调用函数“SurfaceCreated” 实际结果:加载活动时,屏幕呈灰色,我可以听到视频的正确声音 这是我的密码: public class VideoTestActivity : Activity, MediaPlayer.IOnPreparedListener, ISurface

我正努力用VideoView和MediaPlayer播放来自资产的视频

构建版本:安卓6.0.1棉花糖API 23

调试设备:NVIDIA屏蔽板K1

问题:我的VideoView似乎没有创建曲面,因为在调试期间从未调用函数“SurfaceCreated”

实际结果:加载活动时,屏幕呈灰色,我可以听到视频的正确声音

这是我的密码:

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();
        }
    }
公共类VideoTestActivity:Activity,MediaPlayer.IOnPreparedListener,ISurfaceHolderCallback
{
媒体播放器;
VideoView(我的VideoView);
创建时受保护的覆盖无效(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.VideoTest);
player=新媒体播放器();
_myVideoView=findviewbyd(Resource.Id.video);
_myVideoView.Start();
_myVideoView.SetZOrderOnTop(true);//从问答中尝试,显示灰色屏幕
var descriptor=Assets.OpenFd(“video.mp4”);//数据已正确加载
SetDataSource(descriptor.FileDescriptor,descriptor.StartOffset,descriptor.Length);
player.Prepare();
player.Start();
}
已准备好公开作废(MediaPlayer mp)
{
抛出新的NotImplementedException();
}
public void surfacechange(ISurfaceHolder持有人,[GeneratedEnum]格式,整数宽度,整数高度)
{
抛出新的NotImplementedException();
}
已处理的公共空隙表面(ISurfaceHolder)
{
player.SetDisplay(_myVideoView.Holder);//从未调用
}
公共空隙表面置换(ISurfaceHolder)
{
抛出新的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>

我尝试/检查的内容:

  • 我的视频视图的宽度/高度与0不同
  • 描述符已正确加载
  • 在Start()之后调用了SetZOrderOnTop()
  • FindViewById()已正确加载视频视图
我还在寻找anwser,但因为我已经检查了与stackOverflow相关的所有帖子,所以我打开了这篇帖子


感谢您的时间和知识。

好的,我终于找到了播放视频的解决方案,但没有找到加载曲面的解决方案

创建原始文件夹是解决方案

这是新代码(上一个字段中的其他字段为空):


即使原始问题没有得到回答,我也会关闭主题。

好的,所以我最终找到了播放视频的解决方案,但没有找到加载曲面的解决方案

创建原始文件夹是解决方案

这是新代码(上一个字段中的其他字段为空):

即使最初的问题没有得到回答,我也结束了话题

protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            SetContentView(Resource.Layout.VideoTest);

        VideoView view = (VideoView)FindViewById(Resource.Id.videoPacificRim);
            String path = "android.resource://" + PackageName + "/" + Resource.Raw.pacificrim_file;
            view.SetVideoURI(Android.Net.Uri.Parse(path));
            view.Start();
        }