مقاصد دوربین

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