java - 试图让自定义 android 相机工作

标签 java android android-camera

我开发了一个基本的相机,并正在努力让它发挥作用。

这是相机代码

package com.example.camera;

   import java.io.IOException;

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

public class CameraView extends SurfaceView implements SurfaceHolder.Callback {

private SurfaceHolder holder;
 private Camera camera; 
 Object size;

 public CameraView(Context context) {

        super(context);
        holder = this.getHolder();
        holder.addCallback(this);
        holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
        holder.addCallback(this);
}
 public Camera getCamera(){
        return camera;
} 

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

      Camera.Parameters params = camera.getParameters();//Getting paramaters.

        if(size!=null){ //make sure we don't pull a NullException.
                params.setPreviewSize(width, height);//gotta set the size, since we know it. 
        } 
        camera.setParameters(params);//gotta set the paramaters now. 
        camera.startPreview();//starting the preview.
}

public void surfaceCreated(SurfaceHolder arg0) {
    try{
        camera = Camera.open();//setting the camera up.
        camera.setPreviewDisplay(holder);//making the display our current SurfaceHolder
} catch (IOException e){
        e.printStackTrace();//printing out the error message if it happens.
} 

}

public void surfaceDestroyed(SurfaceHolder arg0) {
    camera.stopPreview();
    camera.release();
    camera = null;


} 

        }

现在我试图从我的主要方法调用相机,但我似乎无法让它工作

包 com.example.camera;

import java.io.ByteArrayInputStream;
import java.io.InputStream;

import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.hardware.Camera;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.Button;
 import android.widget.ImageView;

public class main {
private static final int CAMERA_REQUEST = 1888; 
private ImageView imageView;


     public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            this.imageView = (ImageView)this.findViewById(R.id.imageView1);
            Button photoButton = (Button) this.findViewById(R.id.button1);
            photoButton.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                     cam = cv.getCamera(); //notice how we used that method? ;)
                     cam.takePicture(null,null,PictureCallback_);

                }
            });
        }
     Camera.PictureCallback PictureCallback_ = new Camera.PictureCallback() {


            public void onPictureTaken(byte[] imageData, Camera c) {

                    InputStream is = new ByteArrayInputStream(imageData);


                    Bitmap bmp = BitmapFactory.decodeStream(is); 
            } 
    } ;

感谢任何帮助。尝试调用原始相机 Activity getCamera,然后拍摄照片并将其放入 imageView1 中。感谢任何帮助。

最佳答案

尝试在您的 onClick() 方法中执行此操作:

cam.autoFocus(new AutoFocusCallback(){
    Camera.ShutterCallback shutterCallback = new Camera.ShutterCallback() {
        public void onShutter() {
          // If you want to play your own sound (otherwise, it plays the sound by default)
        }
    };

    @Override
    public void onAutoFocus(boolean arg0, Camera arg1) {
        cam.takePicture(shutterCallback, null, PictureCallback_);
    }
});

关于java - 试图让自定义 android 相机工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13223295/

相关文章:

android - 如何在安卓手机上静音相机快门声音

java - 如何清除 Aeron 过期的存档和快照文件?

java - Spring嵌入式数据库IllegalState错误

java - 如何在主类的对象上使用扩展类的方法? [JAVA]

使用 Feinstein SldingMenu 和 AppCompat v21 的 Android L ActionBarActivity 在屏幕底部被截断

android - 在 Android Studio Chipmunk 2021.2.1 补丁 1 中构建新项目失败

android - 超出最小未出列缓冲区计数

java - 为什么我的 getTimeZone().getDisplayName 报告错误的偏移量?

java - apache poi excel小时格式设置单元格值java

android - 为什么我的相机预览显示水平而不是垂直?