gpt4 book ai didi

android - 如何等到相机在android中捕获图像?

转载 作者:行者123 更新时间:2023-11-30 00:43:22 29 4
gpt4 key购买 nike

我正在开发一个 Android 应用程序,该应用程序使用前后摄像头以编程方式捕获图像并将其保存到内部存储器中的文件夹中。保存图像后,应用程序将通过电子邮件发送文件夹的内容。如何等待应用程序直到图像完全捕获,否则会发送空白电子邮件?

class MainActivity{
//other codes
public void buttonClick(View v) {

CameraService.startCamera(0, true);
sendEmail();
}

public void sendEmail()
{
//get contents from the folder and send the contents using java mail api
}
}

这是使用前置和后置摄像头捕捉图像的类。

class CamearService
{
public static void startCamera(int cameraID,final boolean isFirstTime) {
mCamera = Camera.open(cameraID);
try {
mCamera.setPreviewTexture(new SurfaceTexture(10));
} catch (IOException e1) {
}

Parameters params = mCamera.getParameters();
params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
params.setPictureFormat(ImageFormat.JPEG);
params.setJpegQuality(100);
mCamera.setParameters(params);
mCamera.startPreview();

mCamera.takePicture(null, null, null, new PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
Log.i("hello", "picture-taken");
if (data != null) {

mCamera.stopPreview();
mCamera.release();

try {

BitmapFactory.Options opts = new BitmapFactory.Options();
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0,
data.length, opts);

storeImage(bitmap); //function to store image to local folder
if(isFirstTime)
{
//Capture using front camera
CameraService.startCamera(1, false);
}

} catch (Exception e) {
e.printStackTrace();
}

}
}
});

}
}

当我单击按钮时,将执行 startCamera() 函数,并在捕获第二张图像之前执行 sendEmail() 函数。结果只有一张图片通过电子邮件发送。

最佳答案

您正在寻找的是称为回调的基本编程概念(您正在使用 Camera.takePicture() 方法调用)。

请在这里阅读我的回答,因为它也适用于您的情况: Handle data returned by an Async task (Firebase)

关于android - 如何等到相机在android中捕获图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42210454/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com