مقاصد دوربین

برای انجام اقدامات اولیه دوربین مانند گرفتن عکس یا فیلم با استفاده از برنامه دوربین پیش‌فرض دستگاه، نیازی به ادغام با کتابخانه دوربین ندارید. در عوض، از یک Intent استفاده کنید.

با یک برنامه دوربین عکس بگیرید

اندروید با فراخوانی یک Intent اقدامات را به برنامه‌های دیگر محول می‌کند. این فرآیند شامل سه بخش است: خود Intent ، فراخوانی برای شروع Activity خارجی و مقداری کد برای مدیریت داده‌های تصویر هنگام بازگشت focus به 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() را فراخوانی می‌کند، محافظت می‌شود. resolveActivity() اولین کامپوننت اکتیویتی را که می‌تواند Intent را مدیریت کند، برمی‌گرداند. این بررسی را انجام دهید تا مطمئن شوید که Intent ی را فراخوانی می‌کنید که برنامه شما را از کار نمی‌اندازد.

منابع اضافی

برای اقدامات اولیه دوربین، از یک Intent استفاده کنید. در غیر این صورت، توصیه می‌شود برای هر چیزی پیچیده‌تر از ضبط تصویر یا فیلم ساده، از کتابخانه‌های Camera2 و CameraX استفاده کنید.