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

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