Düşük ışıkta artırma istemcisi oluşturma ve kullanma

Google Zayıf Işık Güçlendirme'yi kullanmak için zayıf ışık güçlendirme istemcisine ihtiyacınız vardır. İstemciyi kullanarak zayıf ışık güçlendirme modülünün yüklü olup olmadığını ve Google Zayıf Işık Güçlendirme'nin, uygulamanızın çalıştığı cihaz ve kamera tarafından desteklenip desteklenmediğini kontrol edebilirsiniz. Ayrıca istemciyi kullanarak bir LowLightBoostSession oluşturacaksınız. (Zayıf ışıkta iyileştirmeyi açıp kapatmak için oturumdan yararlanacaksınız.) Ayrıca, zayıf ışık artırma etkin olduğunda geri çağırma almak için bir dinleyici de ayarlayabilirsiniz.

LowLightBoostClient yöntemleri, doğrudan başarı veya başarısızlık sinyali vermez. Bunun yerine Task nesnesi döndürürler. Başarılı ve başarısız dinleyicileri ayarlamak için Task kullanırsınız. Bu sayede yöntemler, başarı veya başarısızlığı eşzamansız olarak bildirebilir. Yöntemlerin Google Play Hizmetleri ile iletişim kurması gerektiğinden bu işlem 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")
}

Modern

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 zayıf ışıkta 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

Düşük ışık güçlendirmesinin desteklenip desteklenmediğini kontrol etme

İstemciniz olduğunda, uygulamanın çalıştığı cihazın düşük ışıkta güçlendirmeyi destekleyip desteklemediğini kontrol edebilirsiniz. Aşağıdaki kod, düşük ışık güçlendirmesinin 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 kamerasının kimliği olarak kabul edilir.
  • LowLightBoostClient.isCameraSupported(), Camera2 kamerasının düşük ışıkta güçlendirmeyi destekleyip desteklemediğini kontrol eder. Bazı durumlarda cihaz, düşük ışıkta güçlendirmeyi destekleyebilir ancak kameralarından biri desteklemeyebilir. Bu nedenle her ikisini de kontrol etmeniz gerekir.
  • LowLightBoostClient.isCameraSupported() yöntemi bir Task nesnesi döndürür. Bu nesneyi, başarı ve başarısızlık dinleyicileri oluşturmak için kullanırsınız. Başarı dinleyicisinde zayıf ışıkta çekim oturumunu oluşturun.

Düşük ışıkta güçlendirme modülünün yüklü olup olmadığını kontrol etme

İstemciyi aldıktan sonra, düşük ışıkta güçlendirme modülünün cihazınızda yüklü olup olmadığını 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.
  • LowLightBoostClient.isModuleInstalled() yöntemi, bir Task nesnesi döndürür. Bu nesneyi, başarı ve başarısızlık dinleyicileri oluşturmak için kullanırsınız.
  • isModuleInstalled() çağrısı başarılı olursa çağrılan bir dinleyici ayarlamak için Task.addOnSuccessListener() kullanın. Önemli bir nokta: Başarılı dinleyici çağrılırsa bu yalnızca istemcinin, modülün cihazda yüklü olup olmadığını öğrenmeyi başardığını gösterir. Dinleyicinizin gövdesinde, modülün gerçekten yüklü olup olmadığını kontrol etmeniz gerekir.
  • Modül henüz yüklenmemişse bu snippet, launchInstallRequest() yöntemini çağırarak modülü yükler. Bu yöntem, Düşük ışıkta güçlendirme modülünü yükleme bölümündeki snippet'te tanımlanmıştır.

Düşük ışık güçlendirmesi modülünü yükleme

Düşük ışıkta güçlendirme modülü cihazda yüklü değilse Google Play Hizmetleri'nden indirip yüklemeniz gerekir. Aşağıdaki kodda bunun nasıl yapılacağı gösterilmektedir:

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() yöntemini çağırdığınızda LowLightBoostClient.InstallStatusCallback yöntemini uygulayan bir geri çağırma nesnesi iletirsiniz. installModule(), indirme işleminin durumunu belirtmek için bu geri çağırmadaki yöntemleri çağırır. Örneğin, indirme işlemi duraklatılırsa installModule(), geri çağırma nesnesinin onDownloadPause() yöntemini çağırır.
  • Bu kod snippet'inde, geri çağırma nesnesi createInstallStatusCallback() yöntemiyle oluşturulur. Bu yöntemi kendiniz yazmanız gerekir. Örneğin:

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şıkta Geliştirme özelliğini destekleyip desteklemediğini kontrol eder. Aksi takdirde modülü indirmeyin.

  • LowLightBoostClient.installModule() yöntemi, bir Task nesnesi döndürür. Bu nesneyi, başarı ve başarısızlık dinleyicileri oluşturmak 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.