หากต้องการดำเนินการพื้นฐานเกี่ยวกับกล้อง เช่น การถ่ายรูปภาพหรือวิดีโอโดยใช้แอปพลิเคชันกล้องเริ่มต้นของอุปกรณ์ คุณไม่จำเป็นต้องผสานรวมกับคลังกล้อง ให้ใช้ Intent
แทน
ถ่ายรูปด้วยแอปกล้องถ่ายรูป
Android จะมอบหมายการดำเนินการไปยังแอปพลิเคชันอื่นๆ โดยการเรียกใช้ Intent
กระบวนการนี้ประกอบด้วย 3 ส่วน ได้แก่ Intent
เอง การเรียกเพื่อเริ่ม Activity
ภายนอก และโค้ดบางส่วนเพื่อจัดการข้อมูลรูปภาพเมื่อโฟกัสกลับมาที่กิจกรรมของคุณ
นี่คือฟังก์ชันที่เรียกใช้ Intent
เพื่อถ่ายรูป
Kotlin
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 } }
Java
static final int REQUEST_IMAGE_CAPTURE = 1; private void dispatchTakePictureIntent() { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); try { startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); } catch (ActivityNotFoundException e) { // display error state to the user } }
บันทึกวิดีโอด้วยแอปกล้องถ่ายรูป
นอกจากนี้ คุณยังเรียกใช้ Intent
เพื่อบันทึกวิดีโอได้ด้วย
Kotlin
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 } } }
Java
static final int REQUEST_VIDEO_CAPTURE = 1; private void dispatchTakeVideoIntent() { Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); if (takeVideoIntent.resolveActivity(getPackageManager()) != null) { startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE); } else { //display error state to the user } }
เมธอด startActivityForResult()
ได้รับการปกป้องโดยเงื่อนไขที่เรียก resolveActivity()
ซึ่งจะแสดงผลคอมโพเนนต์กิจกรรมแรกที่สามารถจัดการ Intent
ได้ ทำการตรวจสอบนี้เพื่อให้แน่ใจว่าคุณเรียกใช้ Intent
ที่จะไม่ทำให้แอปขัดข้อง
แหล่งข้อมูลเพิ่มเติม
สำหรับการดำเนินการพื้นฐานของกล้อง ให้ใช้ Intent
ไม่เช่นนั้น เราขอแนะนำให้ใช้ไลบรารี Camera2 และ CameraX สำหรับการดำเนินการที่ซับซ้อนกว่าการจับภาพหรือวิดีโอพื้นฐาน