不带按钮的突发相机

时间:2015-11-10 12:23:03

标签: android

我创建了一个爆破相机,我想在活动开始时,相机开始自动拍照而不按任何按钮。

它说:不幸的是,当我尝试放置时,FrontVerify已停止:

  

preview.camera.takePicture(shutterCallback,rawCallback,                               jpegCallback);

onCreate方法

事情是:我想创建一系列照片,模拟一个按钮。当用户将手指放在相机附近并且它全部保持黑色时,我的算法会告诉我BLACK = TRUE,所以继续进行下一个活动。因此,我不需要任何物理或数字按钮,我可以使用相机来解决这个问题。

所以到目前为止我唯一的方法是使用onClick方法和 我真的想摆脱这里的onClick方法:

public void onClick(View v) {
                    preview.camera.takePicture(shutterCallback, rawCallback,
                            jpegCallback);
                    buttonClick.setEnabled(false);
            }

爆破相机的算法就是这个:

PictureCallback jpegCallback = new PictureCallback() {
        public void onPictureTaken(byte[] data, Camera camera) {
            FileOutputStream outStream = null;
            try {
                // write to local sandbox file system
                // outStream =
                // CameraDemo.this.openFileOutput(String.format("%d.jpg",
                // System.currentTimeMillis()), 0);
                // Or write to sdcard
                outStream = new FileOutputStream(String.format(
                        "/sdcard/eyeverify/still%d.jpg",
                        System.currentTimeMillis()));
                outStream.write(data);
                outStream.close();
                Log.d(TAG, "onPictureTaken - wrote bytes: " + data.length);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
            }
            Log.d(TAG, "onPictureTaken - jpeg");
            try {
                stillCount++;
                camera.startPreview();
                if (stillCount < 10) {
                    preview.camera.takePicture(shutterCallback, rawCallback,
                            jpegCallback);
                } else {
                    stillCount = 0;
                    buttonClick.setEnabled(true);
                }
            } catch (Exception e) {
                Log.d(TAG, "Error starting preview: " + e.toString());
            }
        }
    };

}

所以我无法弄清楚,如何启动应用程序,相机会自动开始爆破。

2 个答案:

答案 0 :(得分:1)

只需:

new Handler().postDelayed(new Runnable(){
  public void run(){
    yourBtn.performClick();
  }
}, 1000).

答案 1 :(得分:0)

在OnStart或OnCreate中调用此方法:

preview.camera.takePicture(shutterCallback, rawCallback,
                        jpegCallback);

根据您在OnPause和OnResume上管理应用的方式,最好将其放入OnResume中。如果您希望它在暂停时或刚刚首次启动时以相机连拍开始。

我还会确保您在OnStop中清理资源。