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

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