تعزيز الإضاءة المنخفضة

يقدّم Android 15 ميزة تعزيز الإضاءة المنخفضة، وهو وضع جديد للتعرض التلقائي للضوء. كل من الكاميرا 2 وإضافة كاميرا الوضع الليلي. تعزيز الإضاءة المنخفضة يضبط تلقائيًا سطوع بث المعاينة في الإضاءة المنخفضة الظروف. ويختلف ذلك عن الطريقة التي تنشئ بها إضافة الكاميرا في "الوضع الليلي" الصور الثابتة، لأن الوضع الليلي يدمج مجموعة من الصور لإنشاء صورة واحدة صورة محسّنة في حين أن الوضع الليلي يعمل بشكل جيد جدًا لإنشاء صورة ثابتة، لا يمكنها إنشاء بث مستمر من الإطارات، ولكن يمكن لميزة "تحسين الإضاءة المنخفضة" إجراء ذلك. وبالتالي، تتيح ميزة "تحسين الإضاءة المنخفضة" إمكانات جديدة للكاميرا، مثل ما يلي:

  • توفير معاينة محسّنة للصور، حتى يتمكن المستخدمون من تأطير الصور ذات الإضاءة المنخفضة.
  • جارٍ مسح رموز الاستجابة السريعة ضوئيًا في الإضاءة المنخفضة.

في حال تفعيل ميزة "تحسين الإضاءة المنخفضة"، سيتم تشغيلها تلقائيًا عند انخفاض درجة الحرارة. ويتوقف مستوى الإضاءة عند وجود المزيد من الإضاءة.

يمكن للتطبيقات تسجيل إيقاف بث المعاينة في ظروف الإضاءة المنخفضة لحفظ زيادة السطوع.

يمكنك استخدام ميزة "تحسين الإضاءة المنخفضة" إما في الكاميرا2 أو من خلال إضافات الكاميرا. يتناول هذا المستند كيفية استخدام ميزة "تحسين الإضاءة المنخفضة" مع الكاميرا2. يمكنك أيضًا استخدام "تعزيز الإضاءة المنخفضة" مع إضافة كاميرا "الوضع الليلي" إذا كانت هذه الميزة متوافقة مع الخاص بك.

التحقّق من توفّر غرف

قبل استخدام ميزة "تحسين الإضاءة المنخفضة"، تأكَّد من أنّها متوافقة مع الجهاز. إذا كان "تعزيز الإضاءة المنخفضة" هو أحد أوضاع التعرض المدرجة في camera2.CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES (إضاءة منخفضة إن ميزة "تعزيز" هي الإعداد الخاص بالإضاءة التلقائية، بما أنّ الإعدادات الأخرى للتعريض التلقائي للضوء غير متوافقة مع درجة سطوع المعاينة التي يتم إجراؤها من خلال ميزة "تحسين الإضاءة المنخفضة").

لمعرفة ما إذا كانت ميزة "تحسين الإضاءة المنخفضة" متاحة، يُرجى الاتصال CameraCharacteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES) وتأكَّد ممّا إذا كانت الأوضاع المعروضة تتضمّن ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY:

Kotlin

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
}

Java

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. تحتاج إلى التحقّق لأنّ الإضاءة منخفضة لا يتوافق تطبيق Boost مع بعض إعدادات الكاميرا. على سبيل المثال، تسمح نماذج المواقع الإلكترونية لا يوفّر التسجيل ميزة "تعزيز الإضاءة المنخفضة"، وذلك بسبب اعتبارات عدد اللقطات في الثانية. في حال حذف ميزة "تحسين الإضاءة المنخفضة" غير مفعّلة، وقد تحتاج إلى تغيير الكاميرا. وإعادة المحاولة.

Kotlin

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
)

Java

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 قد تظهر بعد ذلك رمز القمر أو أي مؤشر آخر على زيادة سطوع المعاينة.

Kotlin

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
)

Java

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
);