Pour utiliser l'amplification de luminosité faible de Google, vous devez disposer d'un client d'amplification de luminosité faible.
Vous pouvez utiliser le client pour vérifier si le module d'amélioration en basse luminosité est installé et si Google Low Light Boost est compatible avec l'appareil et l'appareil photo sur lesquels votre application s'exécute. Vous utiliserez également le client pour créer un LowLightBoostSession
.
(Vous utiliserez la session pour activer et désactiver l'amélioration en basse luminosité.) Vous pouvez également configurer un écouteur pour recevoir des rappels lorsque l'amplification en basse luminosité est active.
Les méthodes LowLightBoostClient
n'indiquent pas directement la réussite ou l'échec. À la place, ils renvoient un objet Task
. Vous utilisez un Task
pour configurer des écouteurs de réussite et d'échec. Cela permet aux méthodes de signaler la réussite ou l'échec de manière asynchrone, ce qui est nécessaire, car les méthodes doivent communiquer avec les services Google Play.
Dépendances
Kotlin
dependencies {
val low_light_boost_version = "16.0.0-beta01"
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.0-beta01"
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
est fourni par le package com.google.android.gms.cameralowlight
des services Google Play. Pour en savoir plus sur l'accès aux API des services Google Play, consultez la documentation des services Google Play.
Créer un client
Vous avez besoin d'un client Low Light Boost pour effectuer toute autre action. Le code suivant crée un client :
Kotlin
val lowLightBoostClient = LowLightBoost.getClient(context)
Java
LowLightBoostClient lowLightBoostClient = LowLightBoost.getClient(context);
Points clés concernant ce code
- La classe
LowLightBoost
fournit la méthode statiquegetClient
, qui renvoie une instance deLowLightBoostClient
.
Vérifier si l'amplification de la luminosité est disponible
Une fois que vous avez un client, vous pouvez vérifier si l'amplification en basse luminosité est prise en charge par l'appareil sur lequel l'application est exécutée. Le code suivant vérifie si l'amplification en basse luminosité est prise en charge :
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
}
)
Points clés concernant ce code
cameraId
est supposé être l'ID d'une caméra Camera2, créé ailleurs.LowLightBoostClient.isCameraSupported()
vérifie si la caméra Camera2 est compatible avec l'amplification par faible luminosité. Dans certains cas, un appareil peut être compatible avec l'amélioration de la luminosité en basse lumière, mais l'une de ses caméras peut ne pas l'être. Vous devez donc vérifier les deux.- La méthode
LowLightBoostClient.isCameraSupported()
renvoie un objetTask
. Vous utilisez cet objet pour configurer des écouteurs de réussite et d'échec. Créez la session d'amplification de la luminosité faible dans l'écouteur de réussite.
Vérifier si le module d'amélioration en basse luminosité est installé
Une fois que vous avez un client, vous pouvez vérifier si le module d'amélioration de la luminosité en cas de faible luminosité est installé sur votre appareil. Le code suivant vérifie si le module est installé :
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);
});
Points clés concernant ce code
- Ce code ouvre une session d'appareil photo en se connectant à l'appareil photo identifié par
cameraId
. Pour en savoir plus, consultez la documentation Camera2. - La méthode
LowLightBoostClient.isModuleInstalled()
renvoie un objetTask
. Vous utilisez cet objet pour configurer des écouteurs de réussite et d'échec. - Utilisez
Task.addOnSuccessListener()
pour configurer un écouteur qui est appelé si l'appel àisModuleInstalled()
réussit. Il est important de noter que si l'écouteur de réussite est appelé, cela vous indique simplement que le client a réussi à déterminer si le module est installé sur l'appareil. Dans le corps de votre écouteur, vous devez vérifier si le module est réellement installé ou non. - Si le module n'est pas déjà installé, cet extrait l'installe en appelant la méthode
launchInstallRequest()
. Cette méthode est définie dans l'extrait de code de la section Installer le module Low Light Boost.
Installer le module d'amplification luminosité faible
Si le module d'amélioration en basse luminosité n'est pas déjà installé sur l'appareil, vous devrez le télécharger et l'installer depuis les services Google Play. Voici comment procéder :
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);
});
}
Points clés concernant ce code
- Lorsque vous appelez
LowLightBoostClient.installModule()
, vous transmettez un objet de rappel qui implémenteLowLightBoostClient.InstallStatusCallback
.installModule()
appelle des méthodes dans ce rappel pour indiquer l'état du téléchargement. Par exemple, si le téléchargement est mis en pause,installModule()
appelle la méthodeonDownloadPause()
de l'objet de rappel. - Dans cet extrait de code, l'objet de rappel est créé par la méthode
createInstallStatusCallback()
. Vous devrez écrire cette méthode vous-même, en suivant ces instructions :
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()
vérifie si l'appareil et le système d'exploitation Android sont compatibles avec la fonctionnalité Google Low Light Boost. Si ce n'est pas le cas, ne téléchargez pas le module.La méthode
LowLightBoostClient.installModule()
renvoie un objetTask
. Vous utilisez cet objet pour configurer des écouteurs de réussite et d'échec.Une fois l'installation terminée, le détecteur de réussite vérifie l'installation en ouvrant la caméra. Dans l'extrait, cela se fait en appelant
openCamera()
. Vous devrez écrire cette méthode vous-même.