Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.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
Android 如何一次显示摄像机视图和播放视频视图_Android - Fatal编程技术网

Android 如何一次显示摄像机视图和播放视频视图

Android 如何一次显示摄像机视图和播放视频视图,android,Android,我是android平台的新手,很抱歉问了一些可能很愚蠢的问题。 最初的想法是播放一段视频片段,并从摄像机一次录制视频。 我的主要活动实现了SurfaceHolder.Callback以显示摄像头视图。我已经设法将视图缩小到屏幕的一半,这样我的左半部分屏幕就是来自摄像机的视频。 然后,我使用videoview在屏幕右侧播放预先存储的视频。它根本不起作用(相机帧回放很好)。 有人能给我一点启发吗 @Override public void onCreate(Bundle savedInsta

我是android平台的新手,很抱歉问了一些可能很愚蠢的问题。 最初的想法是播放一段视频片段,并从摄像机一次录制视频。 我的主要活动实现了
SurfaceHolder.Callback
以显示摄像头视图。我已经设法将视图缩小到屏幕的一半,这样我的左半部分屏幕就是来自摄像机的视频。 然后,我使用
videoview
在屏幕右侧播放预先存储的视频。它根本不起作用(相机帧回放很好)。 有人能给我一点启发吗

  @Override
  public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

    setContentView(R.layout.main);
    getWindow().setFormat(PixelFormat.UNKNOWN);

    videoview = (VideoView)findViewById(R.id.videoView1);
    videouri = Uri.parse("android.resource:://com.demoxing1/"+R.raw.sample_video);

    surfaceView = (SurfaceView) findViewById(R.id.camera_preview);
    surfaceHolder = surfaceView.getHolder();
    surfaceHolder.addCallback(this);
    surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

    videoview.start();

}

@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
        int height) {

    if (previewing) {
        camera.stopPreview();
        previewing = false;

    }

    if (camera != null) {

        try {
            camera.setPreviewDisplay(surfaceHolder);
            camera.startPreview();
            previewing = true;

        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}

@Override
public void surfaceCreated(SurfaceHolder holder) {
    camera = Camera.open();
}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {

    camera.stopPreview();
    camera.release();
    camera = null;
    previewing = false;

}



<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="horizontal"
   android:layout_width="match_parent" android:layout_height="match_parent">
    <android.view.SurfaceView android:id="@+id/camera_preview"       android:layout_height="wrap_content" android:layout_width="300dp">   </android.view.SurfaceView>
  <LinearLayout android:id="@+id/linearLayout1" android:layout_width="wrap_content"    android:layout_height="match_parent" android:orientation="vertical" android:weightSum="1">
    <VideoView android:id="@+id/videoView1" android:layout_width="match_parent"    android:layout_height="wrap_content"></VideoView>
</LinearLayout>
@覆盖
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN\u ORIENTATION\u横向);
setContentView(R.layout.main);
getWindow().setFormat(PixelFormat.UNKNOWN);
videoview=(videoview)findviewbyd(R.id.videoView1);
videouri=Uri.parse(“android.resource://com.demoxing1/”+R.raw.sample\u video);
surfaceView=(surfaceView)findViewById(R.id.camera\U预览);
surfaceHolder=surfaceView.getHolder();
surfaceHolder.addCallback(this);
surfaceHolder.setType(surfaceHolder.SURFACE\u TYPE\u PUSH\u缓冲区);
videoview.start();
}
@凌驾
公共无效表面更改(表面文件夹持有者,整型格式,整型宽度,
整数高度){
如果(预览){
camera.stopPreview();
预览=假;
}
如果(照相机!=null){
试一试{
摄像头。设置预览显示(surfaceHolder);
camera.startPreview();
预览=正确;
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
@凌驾
已创建的公共空白表面(表面持有人){
camera=camera.open();
}
@凌驾
公共空间表面覆盖(表面覆盖物持有人){
camera.stopPreview();
相机。释放();
摄像机=零;
预览=假;
}


对不起,我的电脑用完了,我已附加了代码。非常感谢您的帮助!!谢谢

嘿,我对android开发也不是很有经验,但据我所知,摄像头和视频播放器不能在GUI线程中同时运行。我的建议是尝试在不同的线程中运行它们

没有代码没有人能帮你:有人能帮你吗?谢谢!!你能举个例子吗?