Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.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
Java Android摄像头:点击按钮调用预览回调_Java_Android_Android Camera_Onclicklistener - Fatal编程技术网

Java Android摄像头:点击按钮调用预览回调

Java Android摄像头:点击按钮调用预览回调,java,android,android-camera,onclicklistener,Java,Android,Android Camera,Onclicklistener,在框架布局中显示相机。我想通过点击按钮从相机上获取预览画面,但作为一个android新手,我不知道该怎么做。任何帮助都将不胜感激。谢谢 我的代码如下: public class MainActivity extends Activity { private Camera mCamera; private CameraPreview mPreview; @Override protected void onCreate(Bundle savedInstan

在框架布局中显示相机。我想通过点击按钮从相机上获取预览画面,但作为一个android新手,我不知道该怎么做。任何帮助都将不胜感激。谢谢

我的代码如下:

    public class MainActivity extends Activity {
    private Camera mCamera;
    private CameraPreview mPreview;
     @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mCamera = getCameraInstance();

    // Create our Preview view and set it as the content of our activity.
    mPreview = new CameraPreview(this, mCamera);
    FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview);
    mCamera.setDisplayOrientation(90);
    preview.addView(mPreview);


      findViewById(R.id.capture).setOnClickListener(new OnClickListener() {
           @Override
           public void onClick(View v) {


           }
        });         

    }

   @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
   }



   public static Camera getCameraInstance(){
    Camera c = null;
    try {
        c = Camera.open(); // attempt to get a Camera instance
    }
    catch (Exception e){
        // Camera is not available (in use or does not exist)
    }
    return c; // returns null if camera is unavailable
  }






public void onPreviewFrame(byte[] data, Camera camera) {
    try {
        Camera.Parameters parameters = camera.getParameters();
        Size size = parameters.getPreviewSize();
        YuvImage image = new YuvImage(data, parameters.getPreviewFormat(),
                size.width, size.height, null);
        File file = new File(Environment.getExternalStorageDirectory()
                .getPath() + "/out.jpg");
        FileOutputStream filecon = new FileOutputStream(file);
        image.compressToJpeg(
                new Rect(0, 0, image.getWidth(), image.getHeight()), 90,
                filecon);
     } catch (FileNotFoundException e) {
        Toast toast = Toast
                .makeText(getBaseContext(), e.getMessage(), 1000);
        toast.show();
    }
    }



    }

首先,为我可怜的英格道歉! “获取相机预览帧”这个词是否意味着你想要拍照? 如果正确,可以在Camera类中使用takePicture()方法 如果没有,您可以在onPreviewFrame方法中使用一个标志,该标志可以由onClickListener更改为true,并且在执行任务后应更改为false。onPreviewFrame()是PreviewCallback接口中的一个方法。因此,我认为您需要创建一个实现该接口的类,并使用该对象调用camera.setPreviewCallback()。 小心原因每次帧可用时都会调用OnPreviewFrame,也就是说,在预览运行时会多次调用它