我创建了一个爆破相机,我想在活动开始时,相机开始自动拍照而不按任何按钮。
它说:不幸的是,当我尝试放置时,FrontVerify已停止:
onCreate方法preview.camera.takePicture(shutterCallback,rawCallback, jpegCallback);
。
事情是:我想创建一系列照片,模拟一个按钮。当用户将手指放在相机附近并且它全部保持黑色时,我的算法会告诉我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());
}
}
};
}
所以我无法弄清楚,如何启动应用程序,相机会自动开始爆破。
答案 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中清理资源。