Android 如何一次显示摄像机视图和播放视频视图
我是android平台的新手,很抱歉问了一些可能很愚蠢的问题。 最初的想法是播放一段视频片段,并从摄像机一次录制视频。 我的主要活动实现了Android 如何一次显示摄像机视图和播放视频视图,android,Android,我是android平台的新手,很抱歉问了一些可能很愚蠢的问题。 最初的想法是播放一段视频片段,并从摄像机一次录制视频。 我的主要活动实现了SurfaceHolder.Callback以显示摄像头视图。我已经设法将视图缩小到屏幕的一半,这样我的左半部分屏幕就是来自摄像机的视频。 然后,我使用videoview在屏幕右侧播放预先存储的视频。它根本不起作用(相机帧回放很好)。 有人能给我一点启发吗 @Override public void onCreate(Bundle savedInsta
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线程中同时运行。我的建议是尝试在不同的线程中运行它们 没有代码没有人能帮你:有人能帮你吗?谢谢!!你能举个例子吗?