يقدّم Android 15 وضع التعرّض التلقائي للضوء (AE) في ميزة "تحسين الإضاءة المنخفضة"، وهو وضع جديد للتعرّض التلقائي للضوء متاح لكل من الكاميرا 2 وإضافة الوضع الليلي في الكاميرا. يعمل وضع "تحسين الإضاءة المنخفضة" للتعرّف التلقائي على المشهد على ضبط درجة سطوع مصدر المعاينة تلقائيًا في ظروف الإضاءة المنخفضة. يختلف ذلك عن الطريقة التي تُنشئ بها إضافة كاميرا "الوضع الليلي" الصور الثابتة، لأنّ "الوضع الليلي" يجمع بين سلسلت من الصور لإنشاء صورة واحدة محسّنة. على الرغم من أنّ "الوضع الليلي" يعمل بشكل جيد جدًا لإنشاء صورة ثابتة، إلا أنّه لا يمكنه إنشاء سلسلة مستمرة من اللقطات، ولكن يمكن لميزة "تحسين الإضاءة المنخفضة" في وضع "ضبط تلقائي للتعريض" إجراء ذلك. وبالتالي، يتيح وضع "التعرّض التلقائي للضوء" في ميزة "تحسين الإضاءة المنخفضة" ميزات جديدة في الكاميرا، مثل ما يلي:
- توفير معاينة محسّنة للصور، ما يتيح للمستخدمين ضبط عناصر الصور التي تم التقاطها في الإضاءة المنخفضة بشكلٍ أفضل
- مسح رموز الاستجابة السريعة ضوئيًا في الإضاءة المنخفضة
في حال تفعيل وضع "تحسين الإضاءة المنخفضة" للتعرّف التلقائي على الأجسام (AE)، سيتم تفعيله تلقائيًا عند انخفاض مستوى الإضاءة، وإيقافه عند زيادة الإضاءة.
يمكن للتطبيقات تسجيل فيديو من المعاينة المباشرة على الشاشة في ظروف الإضاءة المنخفضة لحفظه بدرجة سطوع أفضل.
يمكنك استخدام وضع "التعرّض التلقائي للضوء" في ميزة "تحسين الإضاءة المنخفضة" إما في Camera2 أو من خلال إضافات الكاميرا. يتناول هذا المستند كيفية استخدام وضع "تحسين الإضاءة المنخفضة" للتعرّف التلقائي على المشهد مع Camera2. يمكنك أيضًا استخدام وضع التعرّض التلقائي للضوء "تحسين الإضاءة المنخفضة" مع ميزة "الوضع الليلي" في كاميرا الإضافات إذا كان الجهاز متوافقًا معها.
التحقّق من مدى التوفّر
قبل استخدام وضع "تحسين الذكاء الاصطناعي في الإضاءة المنخفضة"، تأكَّد من أنّه متاح على الجهاز.
إذا كان متاحًا، يكون وضع "تحسين الإضاءة المنخفضة" للتعرّض التلقائي للضوء أحد أوضاع التعرّض المدرَجة في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 AE Mode (next section) } else { // Proceed without Low Light Boost AE Mode }
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 AE Mode (next section) } else { // Proceed without Low Light Boost AE Mode }
تفعيل وضع "تحسين الإضاءة المنخفضة" للتعرّف التلقائي على المشهد
لتفعيل وضع التعرّض التلقائي "تحسين الإضاءة المنخفضة" في جلسة Camera2، اضبط
CaptureRequest.CONTROL_AE_MODE
على
ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY
. بعد إجراء ذلك، عليك
التأكّد من تفعيل وضع "تحسين الإضاءة المنخفضة" للتعرّف التلقائي على المشهد، ويمكنك إجراء ذلك من خلال وضع علامة في حقل
CaptureResult.CONTROL_AE_MODE
. عليك التحقّق من ذلك لأنّ ميزة "تحسين الإضاءة المنخفضة" لا تتوافق مع جميع إعدادات الكاميرا. على سبيل المثال،
لا يتيح وضع التسجيل السريع استخدام وضع "تحسين الإضاءة المنخفضة" للتعرّف التلقائي على المشهد، وذلك بسبب اعتبارات تتعلّق بعدد اللقطات في الثانية. إذا لم يكن وضع "تحسين الإضاءة المنخفضة" مفعَّلاً، قد تحتاج إلى
تغيير إعدادات الكاميرا وإعادة المحاولة.
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 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 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
.
يمكنك بعد ذلك عرض رمز القمر أو إشارة أخرى تدل على أنّه يتم brightenedالمعاينة.
Kotlin
session.setRepeatingRequest( captureRequestBuilder.build(), object : CaptureCallback() { @Override fun onCaptureCompleted(session: CameraCaptureSession, request: CaptureRequest, result: TotalCaptureResult) { // check if Low Light Boost AE Mode is active or inactive if (result.get(CaptureResult.CONTROL_LOW_LIGHT_BOOST_STATE) == CameraMetadata.CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE) { // Low Light Boost AE Mode state is active // Show Moon Icon } else { // Low Light Boost AE Mode state is inactive or AE mode is not set // to Low Light Boost AE Mode // 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 AE Mode is active or inactive if (result.get(CaptureResult.CONTROL_LOW_LIGHT_BOOST_STATE) == CameraMetadata.CONTROL_LOW_LIGHT_BOOST_STATE_ACTIVE) { // Low Light Boost AE Mode state is active // Show Moon Icon } else { // Low Light Boost AE Mode state is inactive or AE mode is not set // to Low Light Boost AE Mode // Hide Moon Icon } } }, mCameraHandler );