Google Düşük Işık Güçlendirme özelliğini kullanmak için düşük ışık güçlendirme istemcisine ihtiyacınız vardır.
Düşük ışık artırma modülünün yüklü olup olmadığını kontrol etmek ve uygulamanızın çalıştığı cihaz ile kamerada Google Düşük Işık Artırma özelliğinin desteklenip desteklenmediğini kontrol etmek için istemciyi kullanabilirsiniz. Ayrıca LowLightBoostSession
oluşturmak için de istemciyi kullanacaksınız.
(Zayıf ışık güçlendirmeyi açıp kapatmak için oturumu kullanırsınız.) Ayrıca, düşük ışık artırma özelliği etkin olduğunda geri aramalar almak için bir dinleyici de ayarlayabilirsiniz.
LowLightBoostClient
yöntemleri, başarı veya başarısızlığı doğrudan belirtmez. Bunun yerine Task
nesnesi döndürürler. Başarı ve hata dinleyicilerini ayarlamak için Task
kullanırsınız. Bu, yöntemlerin başarılı veya başarısız olduğunu eşzamansız olarak bildirmesine olanak tanır. Yöntemlerin Google Play Hizmetleri ile iletişim kurması gerektiğinden bu gereklidir.
Bağımlılıklar
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
, Google Play Hizmetleri com.google.android.gms.cameralowlight
paketi tarafından sağlanır. Google Play Hizmetleri API'lerine erişme hakkında bilgi edinmek için Google Play Hizmetleri belgelerine bakın.
İstemci oluşturma
Başka bir işlem yapmak için düşük ışıkta görüntü iyileştirme istemcisine ihtiyacınız vardır. Aşağıdaki kod bir istemci oluşturur:
Kotlin
val lowLightBoostClient = LowLightBoost.getClient(context)
Java
LowLightBoostClient lowLightBoostClient = LowLightBoost.getClient(context);
Bu kodla ilgili önemli noktalar
LowLightBoost
sınıfı,LowLightBoostClient
örneğini döndürengetClient
statik yöntemini sağlar.
Düşük ışık güçlendirme özelliğinin desteklenip desteklenmediğini kontrol etme
Bir istemciniz olduğunda, uygulamanın üzerinde çalıştığı cihazın düşük ışık iyileştirme özelliğini destekleyip desteklemediğini kontrol edebilirsiniz. Aşağıdaki kod, düşük ışık güçlendirme özelliğinin desteklenip desteklenmediğini kontrol eder:
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
}
)
Bu kodla ilgili önemli noktalar
cameraId
, başka bir yerde oluşturulan Camera2 kameranın kimliği olarak kabul edilir.LowLightBoostClient.isCameraSupported()
Camera2 kameranın düşük ışıkta iyileştirme özelliğini destekleyip desteklemediğini kontrol eder. Bazı durumlarda, bir cihaz düşük ışıkta iyileştirme özelliğini destekleyebilir ancak kameralarından biri desteklemeyebilir. Bu nedenle, her ikisini de kontrol etmeniz gerekir.LowLightBoostClient.isCameraSupported()
yöntemi,Task
nesnesini döndürür. Bu nesneyi, başarı ve hata dinleyicilerini ayarlamak için kullanırsınız. Başarı işleyicinin içinde düşük ışık güçlendirme oturumu oluşturun.
Zayıf ışıkta iyileştirme modülünün yüklü olup olmadığını kontrol edin
Bir istemciniz olduğunda, düşük ışıkta iyileştirme modülünün cihazınıza yüklenip yüklenmediğini onaylayabilirsiniz. Aşağıdaki kod, modülün yüklü olup olmadığını kontrol eder:
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);
});
Bu kodla ilgili önemli noktalar
- Bu kod,
cameraId
ile tanımlanan kameraya bağlanan bir kamera oturumu açar. Daha fazla bilgi için Camera2 belgelerine bakın. - Yöntem
LowLightBoostClient.isModuleInstalled()
birTask
nesnesi döndürür. Bu nesneyi, başarı ve hata dinleyicilerini ayarlamak için kullanırsınız. Task.addOnSuccessListener()
kullanarakisModuleInstalled()
çağrısı başarılı olursa çağrılan bir dinleyici ayarlayın. Önemli olarak, başarı dinleyicisi çağrılırsa bu yalnızca istemcinin modülün cihaza yüklenip yüklenmediğini öğrenmede başarılı olduğunu gösterir. Dinleyicinizin gövdesinde, modülün gerçekten yüklü olup olmadığını kontrol etmeniz gerekir.- Modül yüklü değilse bu snippet,
launchInstallRequest()
yöntemini çağırarak modülü yükler. Bu yöntem, Install the low light boost module (Zayıf ışıkta iyileştirme modülünü yükleme) bölümündeki snippet'te tanımlanır.
Düşük ışık güçlendirme modülünü yükleyin
Düşük ışıkta iyileştirme modülü cihazda yüklü değilse Google Play Hizmetleri'nden indirip yüklemeniz gerekir. Bu kod, söz konusu işlemin nasıl yapılacağını gösterir:
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);
});
}
Bu kodla ilgili önemli noktalar
LowLightBoostClient.installModule()
işlevini çağırdığınızda,LowLightBoostClient.InstallStatusCallback
işlevini uygulayan bir geri çağırma nesnesi iletirsiniz.installModule()
, indirme durumunu belirtmek için bu geri çağırmadaki yöntemleri çağırır. Örneğin, indirme işlemi duraklatılırsainstallModule()
, geri çağırma nesnesininonDownloadPause()
yöntemini çağırır.- Bu kod snippet'inde geri çağırma nesnesi,
createInstallStatusCallback()
yöntemiyle oluşturulur. Bu yöntemi şu şekilde kendiniz yazmanız gerekir:
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 destekli cihazın ve işletim sisteminin Google Düşük Işık Geliştirme'yi destekleyip desteklemediğini kontrol eder. Aksi takdirde modülü indirmeyin.Yöntem
LowLightBoostClient.installModule()
birTask
nesnesi döndürür. Bu nesneyi, başarı ve hata dinleyicilerini ayarlamak için kullanırsınız.Yükleme tamamlandığında başarı dinleyicisi, kamerayı açarak yüklemeyi doğrular. Snippet'te bu işlem,
openCamera()
çağrısıyla yapılır. Bu yöntemi kendiniz yazmanız gerekir.