繼上一篇 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,所以可以在此處理拍完照的後續動作。
