برای انجام اقدامات اولیه دوربین مانند گرفتن عکس یا فیلم با استفاده از برنامه دوربین پیشفرض دستگاه، نیازی به ادغام با کتابخانه دوربین ندارید. در عوض، از یک 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 } }
جاوا
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
برای ضبط یک ویدیو فراخوانی کنید.
کاتلین
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 } } }
جاوا
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 برای هر چیزی پیچیدهتر از ضبط تصویر یا فیلم اولیه استفاده کنید.