لاستخدام ميزة "تحسين الإضاءة المنخفضة" من 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(). عليك كتابة هذه الطريقة بنفسك.