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