أهداف الكاميرا

لتنفيذ إجراءات الكاميرا الأساسية، مثل التقاط صورة أو فيديو باستخدام تطبيق الكاميرا التلقائي على الجهاز، لن تحتاج إلى الدمج مع مكتبة الكاميرا. بدلاً من ذلك، استخدِم 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 في أي شيء أكثر تعقيدًا من التقاط الصور أو الفيديو الأساسي.