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