গুগল লো লাইট বুস্ট ব্যবহার করার জন্য, আপনার একটি লো লাইট বুস্ট ক্লায়েন্টের প্রয়োজন হবে। আপনি লো লাইট বুস্ট মডিউল ইনস্টল করা আছে কিনা তা পরীক্ষা করতে এবং আপনার অ্যাপটি যে ডিভাইস এবং ক্যামেরায় চলছে তাতে গুগল লো লাইট বুস্ট সমর্থিত কিনা তা পরীক্ষা করতে ক্লায়েন্ট ব্যবহার করতে পারেন। আপনি একটি LowLightBoostSession তৈরি করতেও ক্লায়েন্ট ব্যবহার করবেন। ( আপনি লো লাইট বুস্ট চালু এবং বন্ধ করতে সেশনটি ব্যবহার করবেন ।) লো লাইট বুস্ট সক্রিয় থাকাকালীন কলব্যাক গ্রহণের জন্য আপনি একটি শ্রোতাও সেট আপ করতে পারেন।
LowLightBoostClient পদ্ধতিগুলি সরাসরি সাফল্য বা ব্যর্থতার সংকেত দেয় না। পরিবর্তে, তারা একটি Task অবজেক্ট ফেরত দেয়। আপনি সাফল্য এবং ব্যর্থতার শ্রোতা সেট আপ করতে একটি Task ব্যবহার করেন। এটি পদ্ধতিগুলিকে অ্যাসিঙ্ক্রোনাসভাবে সাফল্য বা ব্যর্থতার সংকেত দিতে দেয়, যা প্রয়োজনীয় কারণ পদ্ধতিগুলিকে Google Play পরিষেবাগুলির সাথে যোগাযোগ করতে হবে।
নির্ভরতা
কোটলিন
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")
}
খাঁজকাটা
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 পরিষেবা com.google.android.gms.cameralowlight প্যাকেজ। Google Play পরিষেবা API অ্যাক্সেস করার তথ্যের জন্য Google Play পরিষেবা ডকুমেন্টেশন দেখুন।
একটি ক্লায়েন্ট তৈরি করুন
অন্য কিছু করার জন্য আপনার একটি কম আলোতে বুস্ট ক্লায়েন্ট প্রয়োজন। নিম্নলিখিত কোডটি একটি ক্লায়েন্ট তৈরি করে:
কোটলিন
val lowLightBoostClient = LowLightBoost.getClient(context)
জাভা
LowLightBoostClient lowLightBoostClient = LowLightBoost.getClient(context);
এই কোড সম্পর্কে গুরুত্বপূর্ণ বিষয়সমূহ
-
LowLightBoostক্লাসটি স্ট্যাটিক পদ্ধতিgetClientপ্রদান করে, যাLowLightBoostClientএর একটি উদাহরণ প্রদান করে।
কম আলোতে বুস্ট সাপোর্ট করে কিনা তা পরীক্ষা করুন
একবার আপনার একটি ক্লায়েন্ট হয়ে গেলে, আপনি অ্যাপটি যে ডিভাইসে চলছে তাতে লো লাইট বুস্ট সমর্থিত কিনা তা পরীক্ষা করতে পারেন। নিম্নোক্ত কোডটি লো লাইট বুস্ট সমর্থিত কিনা তা পরীক্ষা করে:
কোটলিন
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 ক্যামেরার ID বলে ধরে নেওয়া হয়। -
LowLightBoostClient.isCameraSupported()পরীক্ষা করে যে Camera2 ক্যামেরা কম আলোতে বুস্ট সমর্থন করে কিনা। কিছু ক্ষেত্রে, একটি ডিভাইস কম আলোতে বুস্ট সমর্থন করতে পারে কিন্তু এর একটি ক্যামেরা নাও করতে পারে, তাই আপনাকে উভয়ই পরীক্ষা করতে হবে। -
LowLightBoostClient.isCameraSupported()পদ্ধতিটি একটিTaskঅবজেক্ট ফেরত পাঠায়। আপনি এই অবজেক্টটি ব্যবহার করে সাফল্য এবং ব্যর্থতার শ্রোতা সেট আপ করেন। সাফল্যের শ্রোতার ভিতরে কম আলোর বুস্ট সেশন তৈরি করুন ।
কম আলোর বুস্ট মডিউল ইনস্টল করা আছে কিনা তা পরীক্ষা করুন।
একবার আপনার কাছে একটি ক্লায়েন্ট থাকলে, আপনি নিশ্চিত করতে পারবেন যে আপনার ডিভাইসে লো লাইট বুস্ট মডিউল ইনস্টল করা আছে কিনা। নিম্নলিখিত কোডটি মডিউলটি ইনস্টল করা আছে কিনা তা পরীক্ষা করে:
কোটলিন
// 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 module এর স্নিপেটে সংজ্ঞায়িত করা হয়েছে।
কম আলোতে বুস্ট মডিউল ইনস্টল করুন
যদি ডিভাইসে লো লাইট বুস্ট মডিউলটি ইতিমধ্যেই ইনস্টল করা না থাকে, তাহলে আপনাকে এটি গুগল প্লে সার্ভিসেস থেকে ডাউনলোড করে ইনস্টল করতে হবে। এই কোডটি কীভাবে এটি করবেন তা দেখায়:
কোটলিন
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()কল করেন, তখন আপনি একটি কলব্যাক অবজেক্ট পাস করেন, যাLowLightBoostClient.InstallStatusCallbackপ্রয়োগ করে।installModule()ডাউনলোডের অবস্থা নির্দেশ করার জন্য সেই কলব্যাকে পদ্ধতিগুলি কল করে। উদাহরণস্বরূপ, যদি ডাউনলোডটি বিরতি দেওয়া হয়,installModule()কলব্যাক অবজেক্টেরonDownloadPause()পদ্ধতিটি কল করে। - এই কোড স্নিপেটে, কলব্যাক অবজেক্টটি
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()এ কল করে এটি করা হয়। আপনাকে নিজেই সেই পদ্ধতিটি লিখতে হবে।