我正在尝试开发一个Android应用程序,该应用程序使用相机意图自动拍照而无需用户进行任何交互,但无法获取代码以自动触发图像捕获操作。任何有帮助的人??这是我的代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pictureButton = findViewById(R.id.captureFront);
countDownTimer = new MyCountDownTimer(startTime, interval);
if (!timerHasStarted) {
countDownTimer.start();
timerHasStarted = true;
} else {
countDownTimer.cancel();
timerHasStarted = false;
// startB.setText("RESTART");
}
}
public void pictureCapture() throws IOException {
pictureButton.setEnabled(true);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File sampleDir = Environment.getExternalStorageDirectory();
try {
imagefile = File.createTempFile("image", ".jpeg", sampleDir);
} catch (IOException e) {
Log.e(TAG, "sdcard access error");
return;
}
takePicture(shutter, raw, postview, jpeg);
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
}
public final void takePicture(Camera.ShutterCallback shutter,
Camera.PictureCallback raw, Camera.PictureCallback postview,
Camera.PictureCallback jpeg) {
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
// Image captured and saved to fileUri specified in the Intent
Toast.makeText(this, "Image saved to:\n" + data.getData(),
Toast.LENGTH_LONG).show();
} else if (resultCode == RESULT_CANCELED) {
// User cancelled the image capture
Toast.makeText(this, "Image cancelled", Toast.LENGTH_LONG)
.show();
} else {
// Image capture failed, advise user
Toast.makeText(this, "Image failed", Toast.LENGTH_LONG).show();
}
}
}
@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 class MyCountDownTimer extends CountDownTimer {
public MyCountDownTimer(long startTime, long interval) {
super(startTime, interval);
}
@Override
public void onFinish() {
// text.setText("Time's up!, finishes");
countDownTimer.cancel();
try {
pictureCapture();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onTick(long millisUntilFinished) {
// text.setText("" + millisUntilFinished / 1000);
}
}
};
答案 0 :(得分:1)
答案 1 :(得分:0)
像这样......
mPreview.getCamera().autoFocus(autoFocusCallback);
Camera.AutoFocusCallback autoFocusCallback = new Camera.AutoFocusCallback() {
public void onAutoFocus(boolean success, Camera camera) {
mPreview.getCamera().takePicture(shutterCallback, null, jpegCallback);
}
};
因此,您只需致电autoFocus
即可了解拍照过程。