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