כוונות מצלמה

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