برای انجام کنشهای اصلی دوربین مثل گرفتن عکس یا ویدیو بااستفاده از برنامه پیشفرض دوربین دستگاه، نیازی به ادغام با کتابخانه دوربین ندارید. درعوض، از Intent استفاده کنید.
عکس گرفتن با برنامه دوربین
Android با فراخوانی Intent، کنشها را به برنامههای دیگر واگذار میکند. این
فرایند شامل سه بخش است: خود Intent، تماسی برای شروع Activity خارجی،
و کدی برای مدیریت دادههای تصویر وقتی تمرکز به فعالیت شما
برمیگردد.
در اینجا تابعی وجود دارد که Intent را برای گرفتن عکس فراخوانی میکند.
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. } }
ضبط ویدیو با برنامه دوربین
همچنین میتوانید Intent را برای ضبط ویدیو فراخوانی کنید.
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. } } }
روش startActivityForResult() با شرطی محافظت میشود که
resolveActivity() را فراخوانی میکند، که اولین مؤلفه فعالیتی را که میتواند
Intent را مدیریت کند برمیگرداند. این بررسی را انجام دهید تا مطمئن شوید Intent را فراخوانی میکنید
که باعث ازکارافتادن برنامهتان نمیشود.
منابع تکمیلی
برای کنشهای اصلی دوربین، از Intent استفاده کنید. درغیراینصورت، توصیه میشود برای هر چیزی پیچیدهتر از ضبط تصویر یا ویدیو پایه، از کتابخانههای Camera2 و CameraX استفاده کنید.