Untuk menggunakan Google Low Light Boost, Anda memerlukan klien low light boost.
Anda dapat menggunakan klien untuk memeriksa apakah modul low light boost diinstal, dan untuk memeriksa apakah Google Low Light Boost didukung oleh perangkat dan kamera yang menjalankan aplikasi Anda. Anda juga akan menggunakan klien untuk membuat LowLightBoostSession.
(Anda akan menggunakan sesi untuk mengaktifkan dan menonaktifkan low light boost.) Anda juga dapat menyiapkan pemroses untuk menerima callback saat low light boost aktif.
Metode LowLightBoostClient tidak menandakan keberhasilan atau kegagalan secara langsung. Sebagai gantinya,
metode ini menampilkan objek Task. Anda menggunakan Task untuk menyiapkan pemroses keberhasilan dan kegagalan. Hal ini memungkinkan metode menandakan keberhasilan atau kegagalan secara asinkron, yang diperlukan karena metode harus berkomunikasi dengan layanan Google Play.
Dependensi
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 disediakan oleh paket
com.google.android.gms.cameralowlight layanan Google Play. Lihat dokumentasi layanan Google
Play untuk mengetahui informasi tentang cara mengakses Google Play services
API.
Membuat klien
Anda memerlukan klien low light boost untuk melakukan hal lain. Kode berikut membuat klien:
Kotlin
val lowLightBoostClient = LowLightBoost.getClient(context)
Java
LowLightBoostClient lowLightBoostClient = LowLightBoost.getClient(context);
Poin-poin penting tentang kode ini
- Class
LowLightBoostmenyediakan metode statisgetClient, yang menampilkan instanceLowLightBoostClient.
Memeriksa apakah low light boost didukung
Setelah memiliki klien, Anda dapat memeriksa apakah low light boost didukung oleh perangkat yang menjalankan aplikasi. Kode berikut memeriksa apakah low light boost didukung:
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
}
)
Poin-poin penting tentang kode ini
cameraIddiasumsikan sebagai ID kamera Camera2 kamera, yang dibuat di tempat lain.LowLightBoostClient.isCameraSupported()memeriksa apakah kamera Camera2 mendukung low light boost. Dalam beberapa kasus, perangkat mungkin mendukung low light boost, tetapi salah satu kameranya mungkin tidak mendukung, sehingga Anda harus memeriksa keduanya.- Metode
LowLightBoostClient.isCameraSupported()menampilkan objekTask. Anda menggunakan objek ini untuk menyiapkan pemroses keberhasilan dan kegagalan. Buat sesi low light boost di dalam pemroses keberhasilan.
Memeriksa apakah modul low light boost diinstal
Setelah memiliki klien, Anda dapat mengonfirmasi apakah modul low light boost diinstal di perangkat Anda. Kode berikut memeriksa apakah modul diinstal:
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);
});
Poin-poin penting tentang kode ini
- Kode ini membuka sesi kamera yang terhubung ke kamera yang diidentifikasi oleh
cameraId. Untuk mengetahui informasi selengkapnya, lihat dokumentasi Camera2. - Metode
LowLightBoostClient.isModuleInstalled()menampilkan objekTask. Anda menggunakan objek ini untuk menyiapkan pemroses keberhasilan dan kegagalan. - Gunakan
Task.addOnSuccessListener()untuk menyiapkan pemroses yang dipanggil jika panggilan keisModuleInstalled()berhasil. Yang penting, jika pemroses keberhasilan dipanggil, hal ini hanya memberi tahu Anda bahwa klien berhasil mengetahui apakah modul diinstal di perangkat. Di isi pemroses, Anda harus memeriksa apakah modul benar-benar diinstal atau tidak. - Jika modul belum diinstal, cuplikan ini akan menginstalnya dengan memanggil metode
launchInstallRequest(). Metode tersebut ditentukan dalam cuplikan di Menginstal modul low light boost.
Menginstal modul low light boost
Jika modul low light boost belum diinstal di perangkat, Anda harus mendownload dan menginstalnya dari layanan Google Play. Kode ini menunjukkan cara melakukannya:
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);
});
}
Poin-poin penting tentang kode ini
- Saat memanggil
LowLightBoostClient.installModule(), Anda akan meneruskan objek callback, yang mengimplementasikanLowLightBoostClient.InstallStatusCallback.installModule()memanggil metode dalam callback tersebut untuk menunjukkan status download. Misalnya, jika download dijeda,installModule()akan memanggil metode objek callbackonDownloadPause(). - Dalam cuplikan kode ini, objek callback dibuat oleh metode
createInstallStatusCallback(). Anda harus menulis metode tersebut sendiri, dengan mengikuti langkah-langkah berikut:
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()memeriksa apakah perangkat dan sistem operasi yang didukung Android mendukung Google Low Light Boost. Jika tidak, jangan download modul.Metode
LowLightBoostClient.installModule()menampilkan objekTask. Anda menggunakan objek ini untuk menyiapkan pemroses keberhasilan dan kegagalan.Saat penginstalan selesai, pemroses keberhasilan akan memverifikasi penginstalan dengan membuka kamera. Dalam cuplikan, hal ini dilakukan dengan panggilan ke
openCamera(). Anda harus menulis metode tersebut sendiri.