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

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