یک کلاینت تقویت کننده نور کم ایجاد و استفاده کنید، یک کلاینت تقویت کننده نور کم ایجاد و استفاده کنید

برای استفاده از Google Low Light Boost، به یک کلاینت افزایش نور کم نیاز دارید. می‌توانید از مشتری برای بررسی نصب ماژول تقویت نور کم استفاده کنید و بررسی کنید که آیا Google Low Light Boost توسط دستگاه و دوربینی که برنامه شما روی آن اجرا می‌شود پشتیبانی می‌شود یا خیر. همچنین از مشتری برای ایجاد LowLightBoostSession استفاده خواهید کرد. ( از جلسه برای روشن و خاموش کردن افزایش نور کم استفاده می‌کنید .) همچنین می‌توانید شنونده‌ای را تنظیم کنید تا زمانی که تقویت در نور کم فعال است، تماس‌های برگشتی دریافت کند.

روش های LowLightBoostClient مستقیماً موفقیت یا شکست را نشان نمی دهند. در عوض، یک شی Task را برمی گردانند. شما از Task برای تنظیم شنوندگان موفق و شکست استفاده می کنید. این به روش‌ها امکان می‌دهد موفقیت یا شکست را به صورت ناهمزمان علامت‌گذاری کنند، که این امر ضروری است زیرا روش‌ها باید با سرویس‌های Google Play ارتباط برقرار کنند.

وابستگی ها

کاتلین

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")
}

شیار

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 توسط بسته خدمات Google Play com.google.android.gms.cameralowlight ارائه شده است. برای اطلاعات در مورد دسترسی به APIهای خدمات Google Play، به مستندات خدمات Google Play مراجعه کنید.

یک مشتری ایجاد کنید

برای انجام هر کار دیگری به یک کلاینت تقویت کننده نور کم نیاز دارید. کد زیر یک کلاینت ایجاد می کند:

کاتلین

val lowLightBoostClient = LowLightBoost.getClient(context)

جاوا

LowLightBoostClient lowLightBoostClient = LowLightBoost.getClient(context);

نکات کلیدی در مورد این کد

  • کلاس LowLightBoost متد استاتیک getClient ارائه می دهد که نمونه ای از LowLightBoostClient را برمی گرداند.

بررسی کنید که آیا ماژول تقویت نور کم نصب شده است یا خیر

هنگامی که مشتری دارید، می توانید تأیید کنید که آیا ماژول تقویت نور کم روی دستگاه شما نصب شده است یا خیر. کد زیر نصب بودن ماژول را بررسی می کند:

کاتلین

// 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)
  }
}

جاوا

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);
    });

نکات کلیدی در مورد این کد

  • این کد یک جلسه دوربین را باز می کند که به دوربین شناسایی شده توسط cameraId متصل می شود. برای اطلاعات بیشتر، به مستندات Camera2 مراجعه کنید.
  • متد LowLightBoostClient.isModuleInstalled() یک شی Task را برمی گرداند. شما از این شی برای تنظیم شنوندگان موفقیت و شکست استفاده می کنید.
  • از Task.addOnSuccessListener() برای تنظیم شنونده ای استفاده کنید که در صورت موفقیت آمیز بودن فراخوانی به isModuleInstalled() فراخوانی شود. نکته مهم این است که اگر شنونده موفقیت فراخوانی شود، فقط به شما می گوید که مشتری موفق شده است بفهمد که آیا ماژول روی دستگاه نصب شده است یا خیر. در بدنه شنونده خود، باید بررسی کنید که آیا ماژول واقعاً نصب شده است یا خیر.
  • اگر ماژول قبلاً نصب نشده باشد، این قطعه با فراخوانی متد launchInstallRequest() آن را نصب می کند. این روش در قطعه Install the low light boost ماژول تعریف شده است.

ماژول تقویت نور کم را نصب کنید

اگر ماژول تقویت نور کم از قبل روی دستگاه نصب نشده است، باید آن را از خدمات Google Play دانلود و نصب کنید. این کد نحوه انجام این کار را نشان می دهد:

کاتلین

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)
  }
}

جاوا

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);
      });
}

نکات کلیدی در مورد این کد

  • هنگامی که LowLightBoostClient.installModule() را فرا می‌خوانید، یک شئ callback ارسال می‌کنید که LowLightBoostClient.InstallStatusCallback را پیاده‌سازی می‌کند. installModule() متدهایی را در آن callback فراخوانی می کند تا وضعیت دانلود را نشان دهد. برای مثال، اگر دانلود متوقف شود، installModule() متد onDownloadPause() شی callback را فراخوانی می کند.
  • در این قطعه کد، شی callback توسط متد createInstallStatusCallback() ایجاد می شود. شما باید خودتان آن روش را بنویسید، در امتداد این خطوط:

کاتلین

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...
  }

جاوا

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() بررسی می کند که آیا دستگاه و سیستم عامل مجهز به اندروید از Google Low Light Boost پشتیبانی می کند یا خیر. اگر نه، ماژول را دانلود نکنید.

  • متد LowLightBoostClient.installModule() یک شی Task را برمی گرداند. شما از این شی برای تنظیم شنوندگان موفقیت و شکست استفاده می کنید.

  • هنگامی که نصب به پایان می رسد، شنونده موفق نصب را با باز کردن دوربین تأیید می کند. در قطعه، این کار با فراخوانی openCamera() انجام می شود. شما باید آن روش را خودتان بنویسید.

بررسی کنید که آیا تقویت نور کم پشتیبانی می شود

هنگامی که مشتری دارید، می توانید بررسی کنید که آیا تقویت نور کم توسط دستگاهی که برنامه روی آن اجرا می شود پشتیبانی می شود یا خیر. کد زیر بررسی می کند که آیا تقویت نور کم پشتیبانی می شود:

کاتلین

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)
  }
}

جاوا

lowLightBoostClient
  .isCameraSupported(cameraId)
  .addOnSuccessListener(
    lowLightBoostExecutor,
    (isSupported) -> {
      Log.d(TAG, "isCameraSupported: " + isSupported);
      if (isSupported) {
        // Create the low light boost session here
      }
    )

نکات کلیدی در مورد این کد

  • cameraId به عنوان شناسه دوربین Camera2 در نظر گرفته می شود که در جای دیگری ایجاد شده است.
  • LowLightBoostClient.isCameraSupported() بررسی می کند که آیا دوربین Camera2 از تقویت نور کم پشتیبانی می کند یا خیر. در برخی موارد، یک دستگاه ممکن است از تقویت نور کم پشتیبانی کند، اما یکی از دوربین های آن ممکن است پشتیبانی نکند، بنابراین باید هر دو را بررسی کنید.
  • متد LowLightBoostClient.isCameraSupported() یک شی Task را برمی گرداند. شما از این شی برای تنظیم شنوندگان موفقیت و شکست استفاده می کنید. جلسه تقویت نور کم را در شنونده موفقیت ایجاد کنید .
،

برای استفاده از Google Low Light Boost، به یک کلاینت افزایش نور کم نیاز دارید. می‌توانید از مشتری برای بررسی نصب ماژول تقویت نور کم استفاده کنید و بررسی کنید که آیا Google Low Light Boost توسط دستگاه و دوربینی که برنامه شما روی آن اجرا می‌شود پشتیبانی می‌شود یا خیر. همچنین از مشتری برای ایجاد LowLightBoostSession استفاده خواهید کرد. ( از جلسه برای روشن و خاموش کردن افزایش نور کم استفاده می‌کنید .) همچنین می‌توانید شنونده‌ای را تنظیم کنید تا زمانی که تقویت در نور کم فعال است، تماس‌های برگشتی دریافت کند.

روش های LowLightBoostClient مستقیماً موفقیت یا شکست را نشان نمی دهند. در عوض، یک شی Task را برمی گردانند. شما از Task برای تنظیم شنوندگان موفق و شکست استفاده می کنید. این به روش‌ها امکان می‌دهد موفقیت یا شکست را به صورت ناهمزمان علامت‌گذاری کنند، که این امر ضروری است زیرا روش‌ها باید با سرویس‌های Google Play ارتباط برقرار کنند.

وابستگی ها

کاتلین

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")
}

شیار

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 توسط بسته خدمات Google Play com.google.android.gms.cameralowlight ارائه شده است. برای اطلاعات در مورد دسترسی به APIهای خدمات Google Play، به مستندات خدمات Google Play مراجعه کنید.

یک مشتری ایجاد کنید

برای انجام هر کار دیگری به یک کلاینت تقویت کننده نور کم نیاز دارید. کد زیر یک کلاینت ایجاد می کند:

کاتلین

val lowLightBoostClient = LowLightBoost.getClient(context)

جاوا

LowLightBoostClient lowLightBoostClient = LowLightBoost.getClient(context);

نکات کلیدی در مورد این کد

  • کلاس LowLightBoost متد استاتیک getClient ارائه می دهد که نمونه ای از LowLightBoostClient را برمی گرداند.

بررسی کنید که آیا ماژول تقویت نور کم نصب شده است یا خیر

هنگامی که مشتری دارید، می توانید تأیید کنید که آیا ماژول تقویت نور کم روی دستگاه شما نصب شده است یا خیر. کد زیر نصب بودن ماژول را بررسی می کند:

کاتلین

// 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)
  }
}

جاوا

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);
    });

نکات کلیدی در مورد این کد

  • این کد یک جلسه دوربین را باز می کند که به دوربین شناسایی شده توسط cameraId متصل می شود. برای اطلاعات بیشتر، به مستندات Camera2 مراجعه کنید.
  • متد LowLightBoostClient.isModuleInstalled() یک شی Task را برمی گرداند. شما از این شی برای تنظیم شنوندگان موفقیت و شکست استفاده می کنید.
  • از Task.addOnSuccessListener() برای تنظیم شنونده ای استفاده کنید که در صورت موفقیت آمیز بودن فراخوانی به isModuleInstalled() فراخوانی شود. نکته مهم این است که اگر شنونده موفقیت فراخوانی شود، فقط به شما می گوید که مشتری موفق شده است بفهمد که آیا ماژول روی دستگاه نصب شده است یا خیر. در بدنه شنونده خود، باید بررسی کنید که آیا ماژول واقعاً نصب شده است یا خیر.
  • اگر ماژول قبلاً نصب نشده باشد، این قطعه با فراخوانی متد launchInstallRequest() آن را نصب می کند. این روش در قطعه Install the low light boost ماژول تعریف شده است.

ماژول تقویت نور کم را نصب کنید

اگر ماژول تقویت نور کم از قبل روی دستگاه نصب نشده است، باید آن را از خدمات Google Play دانلود و نصب کنید. این کد نحوه انجام این کار را نشان می دهد:

کاتلین

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)
  }
}

جاوا

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);
      });
}

نکات کلیدی در مورد این کد

  • هنگامی که LowLightBoostClient.installModule() را فرا می‌خوانید، یک شئ callback ارسال می‌کنید که LowLightBoostClient.InstallStatusCallback را پیاده‌سازی می‌کند. installModule() متدهایی را در آن callback فراخوانی می کند تا وضعیت دانلود را نشان دهد. برای مثال، اگر دانلود متوقف شود، installModule() متد onDownloadPause() شی callback را فراخوانی می کند.
  • در این قطعه کد، شی callback توسط متد createInstallStatusCallback() ایجاد می شود. شما باید خودتان آن روش را بنویسید، در امتداد این خطوط:

کاتلین

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...
  }

جاوا

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() بررسی می کند که آیا دستگاه و سیستم عامل مجهز به اندروید از Google Low Light Boost پشتیبانی می کند یا خیر. اگر نه، ماژول را دانلود نکنید.

  • متد LowLightBoostClient.installModule() یک شی Task را برمی گرداند. شما از این شی برای تنظیم شنوندگان موفقیت و شکست استفاده می کنید.

  • هنگامی که نصب به پایان می رسد، شنونده موفق نصب را با باز کردن دوربین تأیید می کند. در قطعه، این کار با فراخوانی openCamera() انجام می شود. شما باید آن روش را خودتان بنویسید.

بررسی کنید که آیا تقویت نور کم پشتیبانی می شود

هنگامی که مشتری دارید، می توانید بررسی کنید که آیا تقویت نور کم توسط دستگاهی که برنامه روی آن اجرا می شود پشتیبانی می شود یا خیر. کد زیر بررسی می کند که آیا تقویت نور کم پشتیبانی می شود:

کاتلین

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)
  }
}

جاوا

lowLightBoostClient
  .isCameraSupported(cameraId)
  .addOnSuccessListener(
    lowLightBoostExecutor,
    (isSupported) -> {
      Log.d(TAG, "isCameraSupported: " + isSupported);
      if (isSupported) {
        // Create the low light boost session here
      }
    )

نکات کلیدی در مورد این کد

  • cameraId به عنوان شناسه دوربین Camera2 در نظر گرفته می شود که در جای دیگری ایجاد شده است.
  • LowLightBoostClient.isCameraSupported() بررسی می کند که آیا دوربین Camera2 از تقویت نور کم پشتیبانی می کند یا خیر. در برخی موارد، یک دستگاه ممکن است از تقویت نور کم پشتیبانی کند، اما یکی از دوربین های آن ممکن است پشتیبانی نکند، بنابراین باید هر دو را بررسی کنید.
  • متد LowLightBoostClient.isCameraSupported() یک شی Task را برمی گرداند. شما از این شی برای تنظیم شنوندگان موفقیت و شکست استفاده می کنید. جلسه تقویت نور کم را در شنونده موفقیت ایجاد کنید .