หากต้องการดำเนินการพื้นฐานเกี่ยวกับกล้อง เช่น การถ่ายภาพหรือวิดีโอโดยใช้แอปพลิเคชันกล้องเริ่มต้นของอุปกรณ์ คุณไม่จำเป็นต้องผสานรวมกับไลบรารีกล้อง แต่ให้ใช้ Intent แทน
ถ่ายรูปด้วยแอปกล้องถ่ายรูป
Android จะมอบสิทธิ์การดำเนินการให้แอปพลิเคชันอื่นๆ โดยเรียกใช้ Intent กระบวนการนี้ประกอบด้วย 3 ส่วน ได้แก่ ตัว Intent เอง, การเรียกใช้เพื่อเริ่ม Activity ภายนอก และโค้ดบางส่วนเพื่อจัดการข้อมูลรูปภาพเมื่อโฟกัสกลับมาที่กิจกรรมของคุณ
นี่คือฟังก์ชันที่เรียกใช้ Intent เพื่อจับภาพ
val REQUEST_IMAGE_CAPTURE = 1 private fun dispatchTakePictureIntent() { val takePictureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE) try { startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE) } catch (e: ActivityNotFoundException) { // display error state to the user. } }
บันทึกวิดีโอด้วยแอปกล้อง
นอกจากนี้ คุณยังเรียกใช้ Intent เพื่อจับภาพวิดีโอได้ด้วย
val REQUEST_VIDEO_CAPTURE = 1 private fun dispatchTakeVideoIntent() { Intent(MediaStore.ACTION_VIDEO_CAPTURE).also { takeVideoIntent -> takeVideoIntent.resolveActivity(packageManager)?.also { startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE) } ?: run { // display error state to the user. } } }
เมธอด startActivityForResult() ได้รับการปกป้องโดยเงื่อนไขที่เรียกใช้ resolveActivity() ซึ่งจะแสดงผลคอมโพเนนต์กิจกรรมแรกที่จัดการ Intent ได้ ทำการตรวจสอบนี้เพื่อให้แน่ใจว่าคุณกำลังเรียกใช้ Intent ที่จะไม่ทำให้แอปขัดข้อง
แหล่งข้อมูลเพิ่มเติม
สำหรับการดำเนินการพื้นฐานของกล้อง ให้ใช้ Intent ไม่เช่นนั้น เราขอแนะนำให้ใช้ไลบรารี Camera2 และ CameraX สำหรับการดำเนินการที่ซับซ้อนกว่าการจับภาพหรือวิดีโอพื้นฐาน