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

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