כדי לבצע פעולות בסיסיות במצלמה, כמו צילום תמונה או סרטון באמצעות אפליקציית המצלמה שמוגדרת כברירת מחדל במכשיר, אין צורך בשילוב עם ספריית מצלמה. במקום זאת, צריך להשתמש ב-Intent
.
צילום תמונה באמצעות אפליקציית מצלמה
Android מעביר פעולות לאפליקציות אחרות באמצעות קריאה ל-Intent
. התהליך הזה מורכב משלושה חלקים: 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 לכל דבר שהוא מורכב יותר מצילומי תמונות או סרטונים בסיסיים.