Untuk menggunakan Peningkatan Cahaya Redup Google, Anda memerlukan klien peningkatan cahaya redup.
Anda dapat menggunakan
klien untuk memeriksa apakah modul peningkatan cahaya rendah diinstal, dan untuk memeriksa
apakah Google Low Light Boost didukung oleh perangkat dan kamera tempat aplikasi Anda
berjalan. Anda juga akan menggunakan klien untuk membuat LowLightBoostSession
.
(Anda akan menggunakan sesi untuk mengaktifkan dan menonaktifkan peningkatan cahaya redup.) Anda juga dapat
menyiapkan pemroses untuk menerima callback saat peningkatan cahaya redup 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 perlu berkomunikasi dengan layanan Google Play.
Dependensi
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
disediakan oleh paket
com.google.android.gms.cameralowlight
layanan Google Play. Lihat dokumentasi
layanan Google Play untuk mengetahui informasi tentang mengakses API
layanan Google Play.
Membuat klien
Anda memerlukan klien pengoptimalan cahaya redup untuk melakukan hal lain. Kode berikut membuat klien:
Kotlin
val lowLightBoostClient = LowLightBoost.getClient(context)
Java
LowLightBoostClient lowLightBoostClient = LowLightBoost.getClient(context);
Poin penting tentang kode ini
- Class
LowLightBoost
menyediakan metode statisgetClient
, yang menampilkan instanceLowLightBoostClient
.
Memeriksa apakah modul peningkatan cahaya redup telah diinstal
Setelah memiliki klien, Anda dapat mengonfirmasi apakah modul peningkatan cahaya rendah diinstal di perangkat Anda. Kode berikut memeriksa apakah modul telah 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 penting tentang kode ini
- Kode ini membuka sesi kamera yang terhubung ke kamera yang diidentifikasi oleh
cameraId
. Untuk informasi selengkapnya, lihat dokumentasi Camera2. - Metode
LowLightBoostClient.isModuleInstalled()
akan 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 itu hanya memberi tahu Anda bahwa klien berhasil mengetahui apakah modul diinstal di perangkat. Dalam isi pemroses, Anda perlu 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 peningkatan cahaya redup.
Menginstal modul peningkatan cahaya redup
Jika modul peningkatan cahaya redup 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 penting tentang kode ini
- Saat memanggil
LowLightBoostClient.installModule()
, Anda meneruskan objek callback, yang mengimplementasikanLowLightBoostClient.InstallStatusCallback
.installModule()
memanggil metode dalam callback tersebut untuk menunjukkan status download. Misalnya, jika download dijeda,installModule()
akan memanggil metodeonDownloadPause()
objek callback. - Dalam cuplikan kode ini, objek callback dibuat oleh
metode
createInstallStatusCallback()
. Anda harus menulis metode tersebut sendiri, seperti ini:
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()
akan menampilkan objekTask
. Anda menggunakan objek ini untuk menyiapkan pemroses keberhasilan dan kegagalan.Setelah 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.
Memeriksa apakah peningkatan cahaya redup didukung
Setelah memiliki klien, Anda dapat memeriksa apakah peningkatan cahaya redup didukung oleh perangkat tempat aplikasi berjalan. Kode berikut memeriksa apakah peningkatan cahaya rendah 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 penting tentang kode ini
cameraId
diasumsikan sebagai ID kamera Camera2, yang dibuat di tempat lain.LowLightBoostClient.isCameraSupported()
memeriksa apakah kamera Camera2 mendukung peningkatan cahaya redup. Dalam beberapa kasus, perangkat mungkin mendukung peningkatan cahaya redup, tetapi salah satu kameranya mungkin tidak, jadi Anda perlu memeriksa keduanya.- Metode
LowLightBoostClient.isCameraSupported()
menampilkan objekTask
. Anda menggunakan objek ini untuk menyiapkan pemroses keberhasilan dan kegagalan. Buat sesi peningkatan cahaya redup di dalam pemroses keberhasilan.