لاستخدام ميزة "تحسين الإضاءة المنخفضة" من Google، ستحتاج إلى عميل تحسين الإضاءة المنخفضة.
يمكنك استخدام العميل للتحقّق مما إذا كانت وحدة تحسين الإضاءة المنخفضة مثبّتة، وما إذا كان جهازك والكاميرا التي يشغّل عليها تطبيقك يتيحان استخدام ميزة "تحسين الإضاءة المنخفضة" من Google. ستستخدم أيضًا العميل لإنشاء LowLightBoostSession.
(ستستخدم الجلسة لتفعيل ميزة "تحسين الإضاءة المنخفضة" وإيقافها.) يمكنك أيضًا إعداد أداة معالجة لتلقّي عمليات معاودة الاتصال عندما تكون ميزة "تحسين الإضاءة المنخفضة" نشطة.
لا تشير طرق LowLightBoostClient إلى النجاح أو الفشل مباشرةً. بدلاً من ذلك، تعرض هذه الطرق عنصر Task. يمكنك استخدام Task لإعداد أدوات معالجة النجاح والفشل. يتيح ذلك للطرق الإشارة إلى النجاح أو الفشل بشكل غير متزامن، وهو أمر ضروري لأنّ الطرق تحتاج إلى التواصل مع "خدمات Google Play".
الطلبات التابعة
Kotlin
dependencies {
val low_light_boost_version = "16.0.1-beta04"
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.10.2")
implementation("com.google.android.gms:play-services-base:18.7.0")
implementation("com.google.android.gms:play-services-camera-low-light-boost:${low_light_boost_version}")
implementation("com.google.android.gms:play-services-tasks:18.3.0")
}
أنيق
dependencies {
def low_light_boost_version = "16.0.1-beta04"
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.10.2'
implementation 'com.google.android.gms:play-services-base:18.7.0'
implementation 'com.google.android.gms:play-services-camera-low-light-boost:${low_light_boost_version}'
implementation 'com.google.android.gms:play-services-tasks:18.3.0'
}
يتم توفير LowLightBoostClient من خلال حزمة خدمات Google Play
com.google.android.gms.cameralowlight. يمكنك الاطّلاع على مستندات "خدمات Google
Play" للحصول على معلومات حول الوصول إلى واجهات برمجة التطبيقات في "خدمات Google Play"
.
إنشاء عميل
تحتاج إلى عميل تحسين الإضاءة المنخفضة لإجراء أيّ شيء آخر. تنشئ التعليمات البرمجية التالية عميلاً:
Kotlin
val lowLightBoostClient = LowLightBoost.getClient(context)
Java
LowLightBoostClient lowLightBoostClient = LowLightBoost.getClient(context);
النقاط الرئيسية في هذه التعليمات البرمجية
- يوفّر الصف
LowLightBoostالطريقة الثابتةgetClient، التي تعرض مثيلاً منLowLightBoostClient.
التحقّق مما إذا كانت ميزة "تحسين الإضاءة المنخفضة" متاحة
بعد الحصول على عميل، يمكنك التحقّق مما إذا كان الجهاز الذي يشغّل التطبيق يتيح استخدام ميزة "تحسين الإضاءة المنخفضة". تتحقّق التعليمات البرمجية التالية مما إذا كانت ميزة "تحسين الإضاءة المنخفضة" متاحة:
Kotlin
launch {
try {
// Await the result of the Task in a non-blocking way
val isSupported: Boolean = lowLightBoostClient
.isCameraSupported(cameraId).await()
Log.d(TAG, "isCameraSupported: $isSupported")
if (isSupported) {
// Create the low light boost session here
}
} catch (e: Exception) {
Log.e(TAG, "isCameraSupported failed", e)
}
}
Java
lowLightBoostClient
.isCameraSupported(cameraId)
.addOnSuccessListener(
lowLightBoostExecutor,
(isSupported) -> {
Log.d(TAG, "isCameraSupported: " + isSupported);
if (isSupported) {
// Create the low light boost session here
}
)
النقاط الرئيسية في هذه التعليمات البرمجية
- يُفترض أنّ
cameraIdهو رقم تعريف كاميرا Camera2 تم إنشاؤها في مكان آخر. LowLightBoostClient.isCameraSupported()تتحقّق مما إذا كانت كاميرا Camera2 تتيح استخدام ميزة "تحسين الإضاءة المنخفضة". في بعض الحالات، قد يتيح الجهاز استخدام ميزة "تحسين الإضاءة المنخفضة"، ولكن قد لا تتيح إحدى كاميراته استخدامها، لذا عليك التحقّق من كلتيهما.- تعرض الطريقة
LowLightBoostClient.isCameraSupported()عنصرTask. يمكنك استخدام هذا العنصر لإعداد أدوات معالجة النجاح والفشل. أنشئ جلسة تحسين الإضاءة المنخفضة داخل أداة معالجة النجاح.
التحقّق مما إذا كانت وحدة تحسين الإضاءة المنخفضة مثبّتة
بعد الحصول على عميل، يمكنك التأكّد مما إذا كانت وحدة تحسين الإضاءة المنخفضة مثبّتة على جهازك. تتحقّق التعليمات البرمجية التالية مما إذا كانت الوحدة مثبّتة:
Kotlin
// Handle the Google Play services Task API with Kotlin coroutines
// (kotlinx-coroutines-play-services)
launch {
try {
val isInstalled: Boolean = lowLightBoostClient
.isModuleInstalled(context).await()
if (isInstalled) {
Log.d(TAG, "Module is installed")
try {
openCamera(cameraId)
} catch (e: CameraAccessException) {
Log.e(TAG, "Failed to open camera", e)
}
} else {
Log.d(TAG, "Module is not installed")
launchInstallRequest()
}
} catch (e: Exception) {
Log.e(TAG, "Failed to check module availability", e)
}
}
Java
lowLightBoostClient
.isModuleInstalled(context)
.addOnSuccessListener(
(isInstalled) -> {
if (isInstalled) {
Log.d(TAG, "Module is installed");
try {
openCamera(cameraId);
} catch (CameraAccessException e) {
Log.e(TAG, "Failed to open camera", e);
}
} else {
Log.d(TAG, "Module is not installed");
launchInstallRequest();
}
})
.addOnFailureListener(
(e) -> {
Log.e(TAG, "Failed to check module availability", e);
});
النقاط الرئيسية في هذه التعليمات البرمجية
- تفتح هذه التعليمات البرمجية جلسة كاميرا تتصل بالكاميرا التي تم تحديدها باستخدام
cameraId. لمزيد من المعلومات، يمكنك الاطّلاع على مستندات Camera2. - تعرض الطريقة
LowLightBoostClient.isModuleInstalled()عنصرTask. يمكنك استخدام هذا العنصر لإعداد أدوات معالجة النجاح والفشل. - استخدِم
Task.addOnSuccessListener()لإعداد أداة معالجة يتم استدعاؤها إذا نجحت عملية استدعاءisModuleInstalled(). من المهم أن تعرف أنّه إذا تم استدعاء أداة معالجة النجاح، فهذا يعني فقط أنّ العميل نجح في معرفة ما إذا كانت الوحدة مثبّتة على الجهاز. في نص أداة المعالجة، عليك التحقّق مما إذا كانت الوحدة مثبّتة فعلاً أم لا. - إذا لم تكن الوحدة مثبّتة من قبل، فإنّ هذه المقتطفة تثبّتها من خلال استدعاء الطريقة
launchInstallRequest(). تم تحديد هذه الطريقة في المقتطفة في مقالة تثبيت وحدة تحسين الإضاءة المنخفضة.
تثبيت وحدة تحسين الإضاءة المنخفضة
إذا لم تكن وحدة تحسين الإضاءة المنخفضة مثبّتة من قبل على الجهاز، عليك تنزيلها وتثبيتها من "خدمات Google Play". توضّح التعليمات البرمجية التالية كيفية إجراء ذلك:
Kotlin
private suspend fun launchInstallRequest() {
Log.v(TAG, "Launching install request")
try {
// Check if this device can support Google LLB.
val isDeviceSupported: Boolean = lowLightBoostClient
.isDeviceSupported(context).await()
if (isDeviceSupported) {
Log.d(TAG, "Device is supported")
// Show download indicator, if needed.
try {
val isInstallSuccessful: Boolean = lowLightBoostClient
.installModule(context,
createInstallStatusCallback()
).await()
if (isInstallSuccessful) {
Log.d(TAG, "Module installed")
// Hide download indicator, if needed.
try {
openCamera()
} catch (e: CameraAccessException) {
Log.e(TAG, "Failed to open camera", e)
}
} else {
Log.d(TAG, "Module install failed")
}
} catch (e: Exception) {
Log.e(TAG, "An error occurred installing the module:", e)
}
} else {
Log.d(TAG, "Device is not supported")
}
} catch (e: Exception) {
Log.e(TAG, "An error occurred checking device support:", e)
}
}
Java
private void launchInstallRequest() {
Log.v(TAG, "Launching install request");
// Check if this device can support Google LLB.
lowLightBoostClient
.isDeviceSupported(context)
.addOnSuccessListener(
(isDeviceSupported) -> {
if (isDeviceSupported) {
Log.d(TAG, "Device is supported");
// Show download indicator, if needed.
lowLightBoostClient
.installModule(
this,
createInstallStatusCallback()
)
.addOnSuccessListener(
(result) -> {
if (result) {
Log.d(TAG, "Module installed");
// Hide download indicator, if needed.
try {
openCamera();
} catch (CameraAccessException e) {
Log.e(TAG, "Failed to open camera", e);
}
} else {
Log.d(TAG, "Module install failed");
}
}
);
} else {
Log.d(TAG, "Device is not supported");
}
})
.addOnFailureListener(
(e) -> {
Log.e(TAG, "Failed to check device support", e);
});
}
النقاط الرئيسية في هذه التعليمات البرمجية
- عند استدعاء
LowLightBoostClient.installModule()، يمكنك تمرير عنصر معاودة الاتصال الذي ينفّذLowLightBoostClient.InstallStatusCallback. تستدعيinstallModule()الطرق في معاودة الاتصال هذه للإشارة إلى حالة التنزيل. على سبيل المثال، إذا تم إيقاف التنزيل مؤقتًا، تستدعيinstallModule()عنصر معاودة الاتصالonDownloadPause()طريقة. - في مقتطفة التعليمات البرمجية هذه، يتم إنشاء عنصر معاودة الاتصال من خلال الطريقة
createInstallStatusCallback(). عليك كتابة هذه الطريقة بنفسك، على النحو التالي:
Kotlin
private fun createInstallStatusCallback(): LowLightBoostClient.InstallStatusCallback =
object : LowLightBoostClient.InstallStatusCallback() {
override fun onDownloadPending() {
Log.d(TAG, "onDownloadPending")
// Code here...
}
override fun onDownloadStart() {
Log.d(TAG, "onDownloadStart")
// Code here...
}
// other overrides here...
}
Java
private InstallStatusCallback createInstallStatusCallback() {
new LowLightBoostClient.InstallStatusCallback() {
@Override
public void onDownloadPending() {
Log.d(TAG, "onDownloadPending");
// Code here...
}
@Override
public void onDownloadStart() {
Log.d(TAG, "onDownloadStart");
// Code here...
}
// other overrides here...
}
LowLightBoostClient.isDeviceSupported()تتحقّق مما إذا كان الجهاز الذي يعمل بنظام التشغيل Android ونظام التشغيل يتيحان استخدام ميزة "تحسين الإضاءة المنخفضة" من Google. إذا لم يكن الأمر كذلك، لا تنزِّل الوحدة.تعرض الطريقة
LowLightBoostClient.installModule()عنصرTask. يمكنك استخدام هذا العنصر لإعداد أدوات معالجة النجاح والفشل.عند اكتمال التثبيت، تتحقّق أداة معالجة النجاح من التثبيت من خلال فتح الكاميرا. في المقتطفة، يتم ذلك من خلال استدعاء
openCamera(). عليك كتابة هذه الطريقة بنفسك.