簡體   English   中英

如何等到相機在android中捕獲圖像?

[英]How to wait till the camera capture image in android?

我正在開發一個 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() 方法調用)。

請在此處閱讀我的回答,因為它也適用於您的情況: 處理異步任務返回的數據 (Firebase)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM