উইজেট দিয়ে শুরু করুন

পূর্বশর্ত এবং সেটআপ

শুরু করার আগে, নিশ্চিত করুন যে আপনার পরিবেশ নিম্নলিখিত শর্তগুলো পূরণ করে।

রানটাইম প্রয়োজনীয়তা

টার্গেট ডিভাইসে Wear Widgets ব্যবহারের জন্য com.google.android.wearable.protolayout.renderer APK-এর ভার্সন 1.6.1 বা তার উচ্চতর সংস্করণ প্রয়োজন।

নিম্নলিখিত উপায়গুলির মধ্যে যেকোনো একটি ব্যবহার করে রেন্ডারারটির একটি সামঞ্জস্যপূর্ণ সংস্করণ সংগ্রহ করুন:

  • Wear OS 7 এমুলেটর : Wear OS 7 এমুলেটর ইমেজটি ব্যবহার করুন। 7-এর চেয়ে নিম্নতর সংস্করণগুলো উপযুক্ত নয়। সেটআপ নির্দেশাবলীর জন্য, Wear OS 7 এমুলেটর সেট আপ করুন দেখুন।
  • ফিজিক্যাল ডিভাইস : এমন একটি ফিজিক্যাল Wear OS ডিভাইস ব্যবহার করুন যেটি গুগল প্লে স্টোর থেকে স্বয়ংক্রিয়ভাবে আপডেট পায়, অথবা গুগল প্লে স্টোরে সাইন ইন করা কোনো ডেভেলপার ডিভাইস ব্যবহার করুন।

আপনার ডিভাইসে কোন সংস্করণ ইনস্টল করা আছে তা পরীক্ষা করতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

adb shell dumpsys package com.google.android.wearable.protolayout.renderer | \
  grep -m 1 versionName | \
  awk -F= '{print $2}'

গ্রেডল কনফিগারেশন

Wear Widget লাইব্রেরিগুলো Google Maven- এ পাওয়া যায়।

১. এসডিকে সংস্করণ কনফিগার করুন

আপনার compileSdk এবং targetSdk মান ৩৭ বা তার বেশি সেট করা আছে কিনা তা নিশ্চিত করুন।

android {
    compileSdk = 37
    // ...
    defaultConfig {
        targetSdk = 37
        // ...
    }
}

২. নির্ভরতা যোগ করুন

আপনার অ্যাপের build.gradle.kts ফাইলে নিম্নলিখিত ডিপেন্ডেন্সিগুলো অন্তর্ভুক্ত করুন:

গ্রুভি

dependencies {
    // Core Wear Widget and Remote Compose libraries
    implementation "androidx.compose.remote:remote-creation-compose:1.0.0-alpha010"
    implementation "androidx.compose.remote:remote-core:1.0.0-alpha010"
    implementation "androidx.glance.wear:wear:1.0.0-alpha09"
    implementation "androidx.glance.wear:wear-core:1.0.0-alpha09"
    implementation "androidx.wear.compose.remote:remote-material3:1.0.0-alpha03"

    // Tooling for previews (optional, but recommended)
    implementation "androidx.compose.remote:remote-tooling-preview:1.0.0-alpha010"
    implementation "androidx.wear.compose:compose-ui-tooling:1.6.1"
    implementation "androidx.wear.tiles:tiles-tooling-preview:1.6.0"
    debugImplementation "androidx.wear.tiles:tiles-renderer:1.6.0"
}

কোটলিন

dependencies {
    // Core Wear Widget and Remote Compose libraries
    implementation("androidx.compose.remote:remote-creation-compose:1.0.0-alpha010")
    implementation("androidx.compose.remote:remote-core:1.0.0-alpha010")
    implementation("androidx.glance.wear:wear:1.0.0-alpha09")
    implementation("androidx.glance.wear:wear-core:1.0.0-alpha09")
    implementation("androidx.wear.compose.remote:remote-material3:1.0.0-alpha03")

    // Tooling for previews (optional, but recommended)
    implementation("androidx.compose.remote:remote-tooling-preview:1.0.0-alpha010")
    implementation("androidx.wear.compose:compose-ui-tooling:1.6.1")
    implementation("androidx.wear.tiles:tiles-tooling-preview:1.6.0")
    debugImplementation("androidx.wear.tiles:tiles-renderer:1.6.0")
}

একটি হ্যালো ওয়ার্ল্ড উইজেট তৈরি করুন

একটি Wear Widget-এ GlanceWearWidgetService এক্সটেন্ড করা একটি সার্ভিস এবং GlanceWearWidget এক্সটেন্ড করা একটি উইজেট ক্লাস থাকে। UI-টি @RemoteComposable ফাংশন ব্যবহার করে সংজ্ঞায়িত করা হয় @RemoteComposable

পরিষেবাটি সংজ্ঞায়িত করুন

সার্ভিসটি হলো সেই প্রবেশপথ যার সাথে সিস্টেম সংযুক্ত হয়।

আপনার উইজেটটি সংজ্ঞায়িত করতে, GlanceWearWidgetService এক্সটেন্ড করে এমন একটি সার্ভিস তৈরি করুন। যেহেতু এই লাইব্রেরিটি সক্রিয়ভাবে উন্নয়নাধীন, তাই কিছু নির্দিষ্ট API সীমাবদ্ধ রাখা হয়েছে, যতক্ষণ না সেগুলোর চূড়ান্ত নাম এবং কাঠামো পরিমার্জন করা হচ্ছে। @SuppressLint("RestrictedApi") অ্যানোটেশনটি ব্যবহার করলে আপনার কম্পাইলারকে জানানো হয় যে আপনি ইচ্ছাকৃতভাবে এই নতুন, ক্রমবিকাশমান ফিচারগুলো ব্যবহার করছেন। এই শর্তটি অস্থায়ী এবং ভবিষ্যতের কোনো স্থিতিশীল রিলিজে API-গুলো চূড়ান্ত হয়ে গেলে এটি তুলে নেওয়া হবে।

@SuppressLint("RestrictedApi")
class HelloWidgetService : GlanceWearWidgetService() {
    override val widget: GlanceWearWidget = HelloWidget()
}

উইজেটটি সংজ্ঞায়িত করুন

উইজেট ক্লাসটি উইজেটের জন্য ডেটা এবং লেআউট প্রদান করে।

@SuppressLint("RestrictedApi")
class HelloWidget : GlanceWearWidget() {
    override suspend fun provideWidgetData(
        context: Context,
        params: WearWidgetParams,
    ): WearWidgetData {
        return WearWidgetDocument(background = WearWidgetBrush.color(Color.Blue.rc)) {
            HelloWidgetContent()
        }
    }
}

বিষয়বস্তু সংজ্ঞায়িত করুন

কন্টেন্টটি রিমোট কম্পোজ কম্পোনেন্ট ব্যবহার করে তৈরি করা হয়েছে।

@SuppressLint("RestrictedApi")
@RemoteComposable @Composable
fun HelloWidgetContent() {
    RemoteBox(
        modifier = RemoteModifier.fillMaxSize(),
        contentAlignment = RemoteAlignment.Center,
    ) {
        RemoteText(
            text = "Hello World",
            color = Color.White.rc
        )
    }
}

উইজেট কনফিগারেশন XML তৈরি করুন

উইজেটের বৈশিষ্ট্য এবং সমর্থিত আকার নির্ধারণ করতে res/xml/hello_widget_info.xml একটি নতুন ফাইল তৈরি করুন। <wearwidget-provider> ট্যাগে সমর্থিত XML অ্যাট্রিবিউটগুলোর সম্পূর্ণ রেফারেন্সের জন্য WearWidgetProviderInfo ডকুমেন্টেশন দেখুন।

<wearwidget-provider
    description="@string/hello_widget_description"
    icon="@mipmap/ic_launcher"
    label="@string/hello_widget_label"
    preferredType="SMALL">

    <container
        type="SMALL"
        previewImage="@drawable/widget_preview_small" />
    <container
        type="LARGE"
        previewImage="@drawable/widget_preview_large" />
</wearwidget-provider>

AndroidManifest.xml-এ নিবন্ধন করুন

আপনার AndroidManifest.xml ফাইলে প্রয়োজনীয় ইন্টেন্ট ফিল্টার এবং মেটাডেটা সহ সার্ভিসটি রেজিস্টার করুন।

<service
    android:name=".snippets.widget.HelloWidgetService"
    android:exported="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/hello_widget_label"
    android:permission="com.google.android.wearable.permission.BIND_TILE_PROVIDER">

    <intent-filter>
        <action android:name="androidx.glance.wear.action.BIND_WIDGET_PROVIDER" />
        <!-- If you already have a Tile, omit the following line. -->
        <action android:name="androidx.wear.tiles.action.BIND_TILE_PROVIDER" />
    </intent-filter>

    <meta-data
        android:name="androidx.glance.wear.widget.provider"
        android:resource="@xml/hello_widget_info" />

    <meta-data
        android:name="androidx.wear.tiles.PREVIEW"
        android:resource="@drawable/tile_preview" />
</service>

নির্মাণ এবং স্থাপন

আপনার সার্ভিস এবং উইজেট নির্ধারণ করার পর, আপনি আপনার প্রজেক্টটি বিল্ড করে কোনো ডিভাইস বা এমুলেটরে ডেপ্লয় করতে পারেন।

নির্মাণ এবং ইনস্টল করুন

প্রজেক্টটি বিল্ড করুন এবং আপনার সংযুক্ত ডিভাইস বা এমুলেটরে ডিবাগ APK-টি ইনস্টল করুন:

./gradlew :app:installDebug

আপনার উইজেট যোগ করুন এবং প্রিভিউ দেখুন

অ্যাপটি ইনস্টল হয়ে গেলে, adb ব্যবহার করে প্রোগ্রাম্যাটিকভাবে উইজেটটি ক্যারোসেলে যুক্ত করুন এবং স্ক্রিনে প্রদর্শন করুন।

দ্রষ্টব্য: Wear Widgets ডিবাগিংয়ের উদ্দেশ্যে অন্তর্নিহিত টাইল পরিকাঠামো ব্যবহার করে। ফলে, adb কমান্ডগুলোর জন্য add-tile এবং show-tile অপারেশনগুলোর প্রয়োজন হয়।

১. ক্যারোসেলে উইজেটটি যোগ করুন:

adb shell am broadcast \
  -a com.google.android.wearable.app.DEBUG_SURFACE \
  --es operation add-tile \
  --ecn component <your_package_name>/.HelloWidgetService

২. উইজেটটি দেখান:

adb shell am broadcast \
  -a com.google.android.wearable.app.DEBUG_SYSUI \
  --es operation show-tile \
  --ei index 0

বিভিন্ন স্ক্রিন সাইজে আপনার লেআউটগুলো পরীক্ষা করার জন্য অ্যান্ড্রয়েড স্টুডিও প্রিভিউও উপলব্ধ রয়েছে।