在空白surfaceView打开相机 [英] Open Camera in a blank surfaceView

查看:249
本文介绍了在空白surfaceView打开相机的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我很新到Android编程和所有我想要做的是表面视图中打开摄像头应用程序,以便我可以打开相机到它,并设置一些参数,如下面的?

I am very new to android programming and All I want to do is open camera app in surface view so that I can open camera into it and set some parameters like following?

Camera camera = Camera.open();
 Parameters p = camera.getParameters();
 p.setFlashMode(Parameters.FLASH_MODE_ON);
 camera.setParameters(p);
 camera.startPreview();        
 camera.release();

我碰到评论是说,我要过的表面。所以我已经创建下列表面:

I came across comments saying that I HAVE to pass a surface. so I have created following surface:

package com.example.fcloader;

import java.io.IOException;

import android.content.Context;
import android.view.SurfaceView;
import android.view.SurfaceHolder;
import android.hardware.Camera;


public class CameraSurfaceView extends SurfaceView implements SurfaceHolder.Callback
{
        private SurfaceHolder holder;
        private Camera camera;

        public CameraSurfaceView(Context context) 
        {
                super(context);

                //Initiate the Surface Holder properly
                this.holder = this.getHolder();
                this.holder.addCallback(this);
                this.holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
        }

        @Override
        public void surfaceCreated(SurfaceHolder holder) 
        {
                try
                {
                        //Open the Camera in preview mode
                        this.camera = Camera.open();
                        this.camera.setPreviewDisplay(this.holder);
                }
                catch(IOException ioe)
                {
                        ioe.printStackTrace(System.out);
                }
        }

        @Override
        public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) 
        {
                // Now that the size is known, set up the camera parameters and begin
                // the preview.
                Camera.Parameters parameters = camera.getParameters();
                parameters.setPreviewSize(width, height);
                camera.setParameters(parameters);
                camera.startPreview();
        }


        @Override
        public void surfaceDestroyed(SurfaceHolder holder) 
        {
                // Surface will be destroyed when replaced with a new screen
                //Always make sure to release the Camera instance
                camera.stopPreview();
                camera.release();
                camera = null;
        }

        public Camera getCamera()
        {
                return this.camera;
        }
}

这是基本的表面,我在网上得到了code。我的问题是,我应该怎么改变,使这些东西与对方合作?

This is code of basic surface that I got online. My question is that What should I change to make these things work with each other?

推荐答案

camera.start preVIEW()你写 preview.setCamera(摄像头)设置摄像头。 preVIEW 是你的类的对象延伸 SurfaceView 和农具 SurfaceHolder.Callback

After camera.startPreview() you have to write preview.setCamera(camera) to set camera. preview is the object of your class which extends SurfaceView and implements SurfaceHolder.Callback.

camera.startPreview();
preview.setCamera(camera);

这篇关于在空白surfaceView打开相机的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆