ImageCapture 拍照

      在〈ImageCapture 拍照〉中尚無留言

繼上一篇 MahalCameraX 將相機類別獨立出來後,接續進行拍照的動作。

Layout

在 activity_main.xml Layout 新增一顆拍照按鈕如下。

<ImageButton
android:onClick="takePhoto"
android:id="@+id/btnCapture"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_marginBottom="40dp"
android:scaleType="fitCenter"
android:background="@drawable/ic_shutter"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:contentDescription="拍照" />

MahalCameraX.takePicture

在 MahalCameraX 類別中新增 takePicture 方法執行 imageCaputre.takePicutre ,再把要儲存檔案的 fileManager.getOutputStream 傳入即可

fun takePicture(){
    val current= Date()
    val currentTime=SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(current)
    val fileName="${SimpleDateFormat("yyyyMMdd_HHmmss_SSS").format(current)}.jpg"
    imageCapture.takePicture(
        ImageCapture.OutputFileOptions.Builder(
            fileManager.getOutputStream("image/jpeg",G.photoDir,fileName)
        ).build(),
        takePhotoPool,
        object : ImageCapture.OnImageSavedCallback {
            override fun onError(exc: ImageCaptureException) {}
            override fun onImageSaved(output: ImageCapture.OutputFileResults) {}
        }
    )
}

相片儲存完畢後,會調用ImageCapture.OnImageSavedCallback,所以可以在此處理拍完照的後續動作。

🔒 底下內容僅限會員閱讀。

立即登入

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *