কম আলো বুস্ট

Android 15 লো লাইট বুস্ট প্রবর্তন করেছে, একটি নতুন অটো-এক্সপোজার মোড ক্যামেরা 2 এবং নাইট মোড ক্যামেরা এক্সটেনশন উভয়ের জন্য উপলব্ধ। লো লাইট বুস্ট স্বয়ংক্রিয়ভাবে স্বয়ংক্রিয়ভাবে কম-আলো অবস্থায় প্রিভিউ স্ট্রিমের উজ্জ্বলতা সামঞ্জস্য করে। নাইট মোড ক্যামেরা এক্সটেনশন যেভাবে স্থির চিত্র তৈরি করে তার থেকে এটি আলাদা, কারণ নাইট মোড একটি একক, উন্নত চিত্র তৈরি করতে ফটোগুলির একটি বিস্ফোরণকে একত্রিত করে। যদিও নাইট মোড একটি স্থির চিত্র তৈরি করার জন্য খুব ভাল কাজ করে, এটি একটি ক্রমাগত ফ্রেম তৈরি করতে পারে না, তবে লো লাইট বুস্ট করতে পারে। সুতরাং, লো লাইট বুস্ট নতুন ক্যামেরার ক্ষমতা সক্ষম করে, যেমন নিম্নলিখিত:

  • একটি উন্নত ইমেজ প্রিভিউ প্রদান করা, যাতে ব্যবহারকারীরা তাদের কম-আলোতে ছবি ফ্রেম করতে পারে।
  • কম আলোতে QR কোড স্ক্যান করা হচ্ছে।

আপনি যদি লো লাইট বুস্ট সক্ষম করেন, কম আলোর স্তর থাকলে এটি স্বয়ংক্রিয়ভাবে চালু হয় এবং যখন বেশি আলো থাকে তখন বন্ধ হয়ে যায়।

অ্যাপ্লিকেশানগুলি একটি উজ্জ্বল ভিডিও সংরক্ষণ করতে কম আলোতে প্রিভিউ স্ট্রিম রেকর্ড করতে পারে৷

আপনি Camera2 বা ক্যামেরা এক্সটেনশনের মাধ্যমে লো লাইট বুস্ট ব্যবহার করতে পারেন। এই ডকুমেন্টটি Camera2 এর সাথে লো লাইট বুস্ট কিভাবে ব্যবহার করতে হয় তা কভার করে। আপনি নাইট মোড ক্যামেরা এক্সটেনশনের সাথে লো লাইট বুস্ট ব্যবহার করতে পারেন যদি এটি ডিভাইস দ্বারা সমর্থিত হয়।

প্রাপ্যতা জন্য পরীক্ষা করুন

লো লাইট বুস্ট ব্যবহার করার আগে, এটি ডিভাইসে সমর্থিত কিনা তা পরীক্ষা করে নিন। যদি এটি উপলব্ধ থাকে, লো লাইট বুস্ট হল camera2.CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES এ তালিকাভুক্ত এক্সপোজার মোডগুলির মধ্যে একটি। (লো লাইট বুস্ট হল তার নিজস্ব অটো এক্সপোজার সেটিং, যেহেতু অন্যান্য অটো এক্সপোজার সেটিংস লো লাইট বুস্ট দ্বারা সম্পাদিত প্রিভিউ উজ্জ্বল করার সাথে সামঞ্জস্যপূর্ণ নয়।)

তাই, লো লাইট বুস্ট উপলব্ধ কিনা তা পরীক্ষা করতে, CameraCharacteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES) এ কল করুন এবং ফিরে আসা মোডগুলিতে ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY অন্তর্ভুক্ত রয়েছে কিনা তা পরীক্ষা করুন :

কোটলিন

val characteristics = cameraManager.getCameraCharacteristics(cameraId)
val autoExposureModes =
    characteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES)!!
val lowLightBoostSupported = autoExposureModes.contains(
        CameraMetadata.CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY)

if (lowLightBoostSupported) {
  // Enable Low Light Boost (next section)
} else {
  // Proceed without Low Light Boost
}

জাভা

CameraCharacteristics characteristics =
    mCameraManager.getCameraCharacteristics(cameraId);
int[] autoExposureModes =
    characteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES);
boolean lowLightBoostSupported = autoExposureModes.contains(
        CameraMetadata.CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY);

if (lowLightBoostSupported) {
  // Enable Low Light Boost (next section)
} else {
  // Proceed without Low Light Boost
}

লো লাইট বুস্ট সক্ষম করুন

Camera2 সেশনে লো লাইট বুস্ট সক্ষম করতে, CaptureRequest.CONTROL_AE_MODE কে ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY এ সেট করুন। আপনি এটি করার পরে, আপনাকে নিশ্চিত করতে হবে যে লো লাইট বুস্ট চালু ছিল; আপনি CaptureResult.CONTROL_AE_MODE ফিল্ড চেক করে এটি করতে পারেন। আপনাকে পরীক্ষা করতে হবে কারণ লো লাইট বুস্ট সমস্ত ক্যামেরা কনফিগারেশনের সাথে সামঞ্জস্যপূর্ণ নয়৷ উদাহরণস্বরূপ, FPS বিবেচনার কারণে উচ্চ-গতির রেকর্ডিং লো লাইট বুস্ট সমর্থন করে না। লো লাইট বুস্ট চালু না থাকলে, আপনাকে ক্যামেরা কনফিগারেশন পরিবর্তন করে আবার চেষ্টা করতে হতে পারে।

কোটলিন

val captureRequestBuilder = camera.createCaptureRequest(
  CameraDevice.TEMPLATE_PREVIEW)
if (isLowLightBoostAvailable(cameraId)) {
  captureRequestBuilder.set(
    CaptureRequest.CONTROL_AE_MODE,
    CameraMetadata.CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY
  )
}
// other capture request params

session.setRepeatingRequest(
  captureRequestBuilder.build(),
  object : CaptureCallback() {
    @Override
    fun onCaptureCompleted(session: CameraCaptureSession,
        request: CaptureRequest, result: TotalCaptureResult) {
      // verify Low Light Boost AE mode set successfully
      result.get(CaptureResult.CONTROL_AE_MODE) ==
          CameraMetadata.CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY
    }
  },
  cameraHandler
)

জাভা

CaptureRequest.Builder captureRequestBuilder =
  mCamera.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
if (isLowLightBoostAvailable(cameraId)) {
  captureRequestBuilder.set(
    CaptureRequest.CONTROL_AE_MODE,
    CameraMetadata.CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY);
}
// other capture request params

mSession.setRepeatingRequest(
  captureRequestBuilder.build(),
  new CaptureCallback() {
    @Override
    public void onCaptureCompleted(CameraCaptureSession session,
        CaptureRequest request, TotalCaptureResult result) {
      // verify Low Light Boost AE mode set successfully
      result.get(CaptureResult.CONTROL_AE_MODE) ==
          CameraMetadata.CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY;
    }
  },
  mCameraHandler
);

কম আলো বুস্ট মনিটর

লো লাইট বুস্ট কম-আলোর অবস্থায় প্রিভিউ স্ট্রীমকে উজ্জ্বল করে, এবং স্বাভাবিক ক্যাপচারের জন্য পরিবেশ ইতিমধ্যে যথেষ্ট উজ্জ্বল হলে এর কোনো প্রভাব নেই। আপনি CaptureResult.CONTROL_LOW_LIGHT_BOOST_STATE ফিল্ড চেক করে লো লাইট বুস্ট বর্তমানে সক্রিয় কিনা তা নিশ্চিত করতে পারেন৷ আপনি যদি লো লাইট বুস্ট চালু করে থাকেন এবং এটি বর্তমানে সক্রিয় থাকে, তাহলে ক্ষেত্রটি CameraMetadata.CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE সেট করা আছে।CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE। আপনি তখন একটি চাঁদের আইকন বা অন্য কোনো ইঙ্গিত দেখাতে পারেন যে পূর্বরূপ উজ্জ্বল করা হচ্ছে।

কোটলিন

session.setRepeatingRequest(
  captureRequestBuilder.build(),
  object : CaptureCallback() {
    @Override
    fun onCaptureCompleted(session: CameraCaptureSession,
        request: CaptureRequest, result: TotalCaptureResult) {
      // check if Low Light Boost is active or inactive
      if (result.get(CaptureResult.CONTROL_LOW_LIGHT_BOOST_STATE) ==
        CameraMetadata.CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE) {
        // Low Light Boost state is active
        // Show Moon Icon
      } else {
        // Low Light Boost state is inactive or AE mode is not set
        // to Low Light Boost
        // Hide Moon Icon
      }
    }
  },
  cameraHandler
)

জাভা

mSession.setRepeatingRequest(
  captureRequestBuilder.build(),
  new CaptureCallback() {
    @Override
    public void onCaptureCompleted(CameraCaptureSession session,
        CaptureRequest request, TotalCaptureResult result) {
      // check if Low Light Boost is active or inactive
      if (result.get(CaptureResult.CONTROL_LOW_LIGHT_BOOST_STATE) ==
        CameraMetadata.CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE) {
        // Low Light Boost state is active
        // Show Moon Icon
      } else {
        // Low Light Boost state is inactive or AE mode is not set
        // to Low Light Boost
        // Hide Moon Icon
      }
    }
  },
  mCameraHandler
);