כוונות מצלמה

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