لاستخدام ميزة "تحسين الإضاءة المنخفضة" من 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")
}
Groovy
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
من خلال حزمة
com.google.android.gms.cameralowlight
"خدمات Google Play". راجِع مستندات "خدمات 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()
. عليك كتابة هذه الطريقة بنفسك.