আপনার অ্যাপের জন্য কাস্টম কুইক সেটিংস টাইল তৈরি করা

'দ্রুত সেটিংস' হল দ্রুত সেটিংস প্যানেলে দেখানো টাইল, যা অ্যাকশনকে দেখায়, যাতে ব্যবহারকারীরা বারবার করা টাস্ক দ্রুত সম্পূর্ণ করতে ট্যাপ করতে পারেন। আপনার অ্যাপ TileService ক্লাসের মাধ্যমে ব্যবহারকারীদের কাস্টম টাইল প্রদান করতে পারে এবং টাইলের স্ট্যাটাস ট্র্যাক করতে Tile অবজেক্ট ব্যবহার করতে পারে। যেমন, আপনি এমন একটি টাইল তৈরি করতে পারেন যা ব্যবহারকারীদের আপনার অ্যাপের মাধ্যমে প্রদান করা VPN চালু বা বন্ধ করতে দেয়।

VPN টাইল চালু ও বন্ধ করা অবস্থায়
  'দ্রুত সেটিংস' প্যানেল
ছবি ১. VPN টাইল চালু ও বন্ধ করার বিকল্প সহ দ্রুত সেটিংস প্যানেল।

কখন টাইল তৈরি করতে হবে তা ঠিক করুন

আমরা নির্দিষ্ট কার্যকারিতার জন্য টাইল তৈরি করার সাজেশন দিই, যাতে ব্যবহারকারীরা প্রায়ই অ্যাক্সেস করতে পারেন বা দ্রুত অ্যাক্সেস করতে পারেন (অথবা দুটিই)। সবচেয়ে কার্যকর টাইল হল সেগুলি যেগুলি এই দুটি কোয়ালিটির সাথে ম্যাচ করে, ঘনঘন-করা অ্যাকশনে দ্রুত অ্যাক্সেস প্রদান করে।

যেমন, আপনি কোনও ফিটনেস অ্যাপের জন্য টাইল তৈরি করতে পারেন যা ব্যবহারকারীদের দ্রুত ওয়ার্কআউট সেশন শুরু করতে দেবে। তবে, একই অ্যাপের জন্য টাইল তৈরি করার সাজেশন আমরা দেব না, যা ব্যবহারকারীদের তাদের সম্পূর্ণ ওয়ার্কআউট ইতিহাস পর্যালোচনা করার অনুমতি দেবে।

ফিটনেস অ্যাপ টাইল ব্যবহারের উদাহরণ
ছবি ২. ফিটনেস অ্যাপের জন্য সাজেস্ট করা ও সাজেস্ট না করা টাইলের উদাহরণ।

আপনার টাইল খুঁজে পাওয়ার যোগ্যতা ও ব্যবহারের সুবিধা উন্নত করতে, আমরা কিছু পদ্ধতি এড়িয়ে যাওয়ার সাজেশন দিই:

  • অ্যাপ লঞ্চ করার জন্য টাইল ব্যবহার করবেন না। এর পরিবর্তে অ্যাপ শর্টকাট বা স্ট্যান্ডার্ড লঞ্চার ব্যবহার করুন।

  • একবার ব্যবহারকারী অ্যাকশনের জন্য টাইল ব্যবহার করা এড়িয়ে চলুন। পরিবর্তে অ্যাপ শর্টকাট বা বিজ্ঞপ্তি ব্যবহার করুন।

  • অনেক বেশি টাইল তৈরি করা এড়িয়ে চলুন। আমরা অ্যাপ প্রতি সর্বাধিক দুটি সাজেস্ট করি। এর পরিবর্তে অ্যাপ শর্টকাট ব্যবহার করুন।

  • এমন টাইল ব্যবহার করা এড়িয়ে চলুন যা তথ্য দেখায়, কিন্তু ব্যবহারকারীদের জন্য ইন্টারেক্টিভ নয়। পরিবর্তে বিজ্ঞপ্তি বা উইজেট ব্যবহার করুন।

আপনার টাইল তৈরি করুন

টাইল তৈরি করতে, আপনাকে প্রথমে একটি উপযুক্ত টাইল আইকন তৈরি করতে হবে, তারপর আপনার অ্যাপের ম্যানিফেস্ট ফাইলে আপনার TileService তৈরি এবং ঘোষণা করতে হবে।

দ্রুত সেটিংস স্যাম্পেল থেকে আপনি জানতে পারবেন কীভাবে টাইল তৈরি ও ম্যানেজ করতে হয়।

আপনার কাস্টম আইকন তৈরি করুন

আপনাকে একটি কাস্টম আইকন দিতে হবে, যা 'দ্রুত সেটিংস' প্যানেলের টাইলে দেখা যাবে। (TileService ঘোষণা করার সময় আপনি এই আইকন যোগ করবেন, পরবর্তী বিভাগে এটি বর্ণনা করা হয়েছে।) আইকনটি অবশ্যই স্বচ্ছ ব্যাকগ্রাউন্ড সহ সলিড সাদা রঙের হতে হবে, যার পরিমাপ ২৪ x ২৪ডিপি এবং এটি VectorDrawable-এর আকারে হতে হবে।

ভেক্টর ড্রয়েবেলের উদাহরণ
ছবি ৩. ভেক্টর ড্রয়েবেলের উদাহরণ।

এমন একটি আইকন তৈরি করুন যা আপনার টাইলটির উদ্দেশ্য সম্পর্কে ভিজ্যুয়াল ইঙ্গিত দেয়। এটি ব্যবহারকারীদের আপনার টাইল তাদের প্রয়োজন অনুসারে কিনা তা শনাক্ত করতে সাহায্য করে। যেমন, আপনি কোনও ফিটনেস অ্যাপের টাইলসের জন্য স্টপওয়াচের আইকন তৈরি করতে পারেন, যা ব্যবহারকারীদের ওয়ার্কআউট সেশন শুরু করতে সাহায্য করে।

আপনার TileService তৈরি ও ঘোষণা করা

আপনার টাইলসের জন্য এমন একটি পরিষেবা তৈরি করুন যা TileService ক্লাসকে এক্সটেন্ড করে।

class MyQSTileService : TileService() {

    // Called when the user adds your tile.
    override fun onTileAdded() {
        super.onTileAdded()
    }
    // Called when your app can update your tile.
    override fun onStartListening() {
        super.onStartListening()
    }

    // Called when your app can no longer update your tile.
    override fun onStopListening() {
        super.onStopListening()
    }

    // Called when the user taps on your tile in an active or inactive state.
    override fun onClick() {
        super.onClick()
    }
    // Called when the user removes your tile.
    override fun onTileRemoved() {
        super.onTileRemoved()
    }
}

আপনার অ্যাপের ম্যানিফেস্ট ফাইলে TileService ঘোষণা করুন। আপনার TileService-এর নাম ও লেবেল (android:label-এর জন্য সর্বাধিক ১৮টি অক্ষর), আগের বিভাগে আপনার তৈরি করা কাস্টম আইকন এবং উপযুক্ত অনুমতি যোগ করুন।

 <!-- 18-character limit for android:label. -->
 <service
     android:name=".MyQSTileService"
     android:exported="true"
     android:label="@string/my_default_tile_label"
     android:icon="@drawable/my_default_icon_label"
     android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
     <intent-filter>
         <action android:name="android.service.quicksettings.action.QS_TILE" />
     </intent-filter>
 </service>

আপনার TileService ম্যানেজ করুন

আপনার অ্যাপ ম্যানিফেস্টে TileService তৈরি ও ঘোষণা করার পরে, আপনাকে এটির স্ট্যাটাস ম্যানেজ করতে হবে।

TileService হল একটি বাউন্ড পরিষেবা। আপনার অ্যাপ অনুরোধ করলে অথবা সিস্টেমকে এটির সাথে যোগাযোগ করতে হলে, আপনার TileService বাউন্ড করা হয়। একটি সাধারণ বাউন্ড-সার্ভিস লাইফসাইকেলে নিম্নলিখিত চারটি কলব্যাক পদ্ধতি থাকে: onCreate(), onBind(), onUnbind() এবং onDestroy()। প্রতিবার পরিষেবা নতুন লাইফসাইকেল ফেজে প্রবেশ করলে, সিস্টেমের মাধ্যমে এইসব পদ্ধতি চালু করা হয়।

TileService লাইফসাইকেল ওভারভিউ

বাউন্ড-সার্ভিস লাইফসাইকেল কন্ট্রোল করে এমন কলব্যাক ছাড়াও, আপনাকে অবশ্যই TileService লাইফসাইকেলের জন্য নির্দিষ্ট অন্যান্য পদ্ধতি প্রয়োগ করতে হবে। এইসব পদ্ধতি onCreate() এবং onDestroy()-এর বাইরে কল করা হতে পারে কারণ Service লাইফসাইকেল পদ্ধতি এবং TileService লাইফসাইকেল পদ্ধতি দুটি আলাদা অ্যাসিঙ্ক্রোনাস থ্রেডে কল করা হয়।

TileService লাইফসাইকেলে নিম্নলিখিত পদ্ধতিগুলি রয়েছে, যা সিস্টেম দ্বারা প্রতিবার আপনার TileService একটি নতুন লাইফসাইকেল ফেজে প্রবেশ করার সময় চালু করা হয়:

  • onTileAdded(): ব্যবহারকারী প্রথমবার আপনার টাইল যোগ করলে এবং ব্যবহারকারী আপনার টাইল সরিয়ে দিয়ে আবার যোগ করলে, শুধুমাত্র তখনই এই পদ্ধতি কল করা হয়। এককালীন ইনিশিয়ালাইজেশন করার জন্য এটিই সবচেয়ে ভাল সময়। তবে, এটি সব প্রয়োজনীয় ইনিশিয়ালাইজেশন সম্পূর্ণ নাও করতে পারে।

  • onStartListening() এবং onStopListening(): আপনার অ্যাপ যখনই টাইল আপডেট করে, তখনই এই পদ্ধতিগুলি কল করা হয় এবং প্রায়ই কল করা হয়। TileService onStartListening() এবং onStopListening()-এর মধ্যে বাউন্ড থাকে, যা আপনার অ্যাপকে টাইল পরিবর্তন করতে এবং আপডেট পুশ করতে দেয়।

  • onTileRemoved(): ব্যবহারকারী আপনার টাইল সরিয়ে দিলে তবেই এই পদ্ধতি ব্যবহার করা হয়।

একটি লিসেনিং মোড বেছে নিন

আপনার TileService অ্যাক্টিভ মোড বা নন-অ্যাক্টিভ মোডে শোনে। আমরা সাজেস্ট করি অ্যাক্টিভ মোড ব্যবহার করতে, যা আপনাকে অ্যাপ ম্যানিফেস্টে ঘোষণা করতে হবে। অন্যথায়, TileService হল স্ট্যান্ডার্ড মোড এবং এটি ঘোষণা করার প্রয়োজন নেই।

আপনার TileService, onStartListening() এবং onStopListening() পদ্ধতির পেয়ারের বাইরে কাজ করবে বলে ধরে নেবেন না।

TileService-এর জন্য অ্যাক্টিভ মোড ব্যবহার করুন যা নিজের প্রসেসে এর অবস্থা শোনে এবং মনিটর করে। অ্যাক্টিভ মোডে থাকা TileService, onTileAdded(), onTileRemoved(), ট্যাপ ইভেন্ট এবং অ্যাপ প্রসেসের মাধ্যমে অনুরোধ করা হলে, বাউন্ড করা হয়।

আপনার TileService-কে বিজ্ঞপ্তি দেওয়া হলে, আমরা অ্যাক্টিভ মোড সাজেস্ট করি, যখন আপনার টাইল স্টেট নিজস্ব প্রসেসের মাধ্যমে আপডেট করা উচিত। অ্যাক্টিভ টাইল সিস্টেমের উপর চাপ কমায় কারণ ব্যবহারকারী যখনই 'দ্রুত সেটিংস' প্যানেল দেখেন, তখনই সেটিকে বাউন্ড করতে হয় না।

onStartListening()-এ কলব্যাক পেতে এবং লিসেনিং স্টেট শুরু করার অনুরোধ করতে স্ট্যাটিক TileService.requestListeningState() মেথড কল করা যেতে পারে।

আপনার অ্যাপের ম্যানিফেস্ট ফাইলে META_DATA_ACTIVE_TILE যোগ করে আপনি অ্যাক্টিভ মোড ঘোষণা করতে পারবেন।

<service ...>
    <meta-data android:name="android.service.quicksettings.ACTIVE_TILE"
       android:value="true" />
    ...
</service>

নন-অ্যাক্টিভ মোড

নন-অ্যাক্টিভ মোড হল স্ট্যান্ডার্ড মোড। TileService নন-অ্যাক্টিভ মোডে থাকে যদি আপনার টাইল ব্যবহারকারীকে দেখানোর সময় এটি বাউন্ড করা থাকে। এর অর্থ হল, আপনার TileService হয়ত তৈরি করা হতে পারে এবং এর নিয়ন্ত্রণের বাইরে থাকা সময়ে আবার বাউন্ড করা হতে পারে। ব্যবহারকারী টাইল না দেখলে এটি আনবাউন্ড ও নষ্ট হয়ে যেতে পারে।

ব্যবহারকারী তার 'দ্রুত সেটিংস' প্যানেল খোলার পরে আপনার অ্যাপ onStartListening()-এ কলব্যাক পায়। onStartListening() থেকে onStopListening()-এর মধ্যে আপনি যতবার চান ততবার Tile অবজেক্ট আপডেট করতে পারবেন।

আপনাকে নন-অ্যাক্টিভ মোড ঘোষণা করতে হবে না: আপনার অ্যাপের ম্যানিফেস্ট ফাইলে META_DATA_ACTIVE_TILE যোগ করবেন না।

টাইল স্ট্যাটাস এক নজরে

ব্যবহারকারী আপনার টাইল যোগ করার পরে, এটি সবসময় নিম্নলিখিত যেকোনও একটি অবস্থায় থাকে।

  • STATE_ACTIVE: চালু বা অ্যাক্টিভ করা আছে এমন অবস্থা বোঝায়। এই অবস্থায় ব্যবহারকারী আপনার টাইল ব্যবহার করতে পারবেন।

    যেমন, কোনও ফিটনেস অ্যাপের টাইল যা ব্যবহারকারীদের একটি নির্দিষ্ট সময়ের ওয়ার্কআউট সেশন শুরু করতে দেয়, সেক্ষেত্রে STATE_ACTIVE-এর অর্থ হবে যে ব্যবহারকারী একটি ওয়ার্কআউট সেশন শুরু করেছেন এবং টাইমার চলছে।

  • STATE_INACTIVE: বন্ধ বা পজ করা স্ট্যাটাস দেখায়। এই অবস্থায় ব্যবহারকারী আপনার টাইল ব্যবহার করতে পারবেন।

    ফিটনেস অ্যাপ টাইল উদাহরণের কথা আবার বলতে গেলে, STATE_INACTIVE-এ একটি টাইল থাকার অর্থ হল ব্যবহারকারী কোনও ওয়ার্কআউট সেশন শুরু করেননি, তবে চাইলে করতে পারেন।

  • STATE_UNAVAILABLE: সাময়িকভাবে উপলভ্য নেই এমন স্ট্যাটাস দেখায়। এই অবস্থায় ব্যবহারকারী আপনার টাইল ব্যবহার করতে পারবেন না।

    যেমন, STATE_UNAVAILABLE-এ কোনও টাইল থাকলে তার অর্থ হল, কোনও কারণে টাইলটি বর্তমানে ব্যবহারকারীর জন্য উপলভ্য নয়।

সিস্টেমটি শুধুমাত্র আপনার Tile অবজেক্টের প্রাথমিক অবস্থা সেট করে। আপনি Tile অবজেক্টের লাইফসাইকেলের বাকি সময়ের জন্য সেটির স্টেট সেট করেছেন।

আপনার Tile অবজেক্টের স্ট্যাটাস দেখানোর জন্য সিস্টেম টাইল আইকন ও ব্যাকগ্রাউন্ডে টিন্ট যোগ করতে পারে। Tileটি অবজেক্ট STATE_ACTIVE-এ সেট করা হয়েছে যা সবচেয়ে অন্ধকার, STATE_INACTIVE এবং STATE_UNAVAILABLE ক্রমশ হালকা। সঠিক হিউ প্রস্তুতকারক এবং ভার্সনের উপর নির্ভর করে।

অবজেক্টের স্ট্যাটাস দেখানোর জন্য VPN টাইল টিন্ট করা হয়েছে
ছবি ৪. টাইল স্টেট (যথাক্রমে অ্যাক্টিভ, ইনঅ্যাক্টিভ ও উপলভ্য নয় এমন স্টেট) দেখানোর জন্য টাইল টিন্ট করার উদাহরণ।

আপনার টাইল আপডেট করুন

onStartListening()-এ কলব্যাক পাওয়ার পরে আপনি টাইল আপডেট করতে পারবেন। টাইল মোডের উপর নির্ভর করে, onStopListening()-এ কলব্যাক না পাওয়া পর্যন্ত আপনার টাইল অন্তত একবার আপডেট করা যেতে পারে।

অ্যাক্টিভ মোডে, onStopListening()-এ কলব্যাক পাওয়ার আগে আপনি ঠিক একবার আপনার টাইল আপডেট করতে পারবেন। নন-অ্যাক্টিভ মোডে, আপনি onStartListening() থেকে onStopListening()-এর মধ্যে যতবার খুশি আপনার টাইল আপডেট করতে পারবেন।

আপনি getQsTile() নম্বরে কল করে আপনার Tile অবজেক্ট ফিরিয়ে আনতে পারবেন। আপনার Tile অবজেক্টের নির্দিষ্ট ফিল্ড আপডেট করতে, নিম্নলিখিত পদ্ধতিগুলি কল করুন:

Tile অবজেক্টের ফিল্ড সঠিক ভ্যালুতে সেট করা হয়ে গেলে, আপনার টাইল আপডেট করতে আপনাকে অবশ্যই updateTile() কল করতে হবে। এটি সিস্টেমকে আপডেট করা টাইল ডেটা পার্স করতে এবং UI আপডেট করতে বাধ্য করবে।

data class StateModel(val enabled: Boolean, val label: String, val icon: Icon)

override fun onStartListening() {
    super.onStartListening()
    val state = getStateFromService()
    qsTile.label = state.label
    qsTile.contentDescription = state.label
    qsTile.state = if (state.enabled) Tile.STATE_ACTIVE else Tile.STATE_INACTIVE
    qsTile.icon = state.icon
    qsTile.updateTile()
}

হ্যান্ডেল ট্যাপ

আপনার টাইল STATE_ACTIVE বা STATE_INACTIVE-এ থাকলে, ব্যবহারকারীরা কোনও অ্যাকশন ট্রিগার করতে আপনার টাইলে ট্যাপ করতে পারেন। সিস্টেম তখন আপনার অ্যাপের onClick() কলব্যাক চালু করে।

আপনার অ্যাপ onClick()-এ কলব্যাক পেলে, এটি কোনও ডায়ালগ বা অ্যাক্টিভিটি লঞ্চ করতে, ব্যাকগ্রাউন্ডে কাজ ট্রিগার করতে বা আপনার টাইল-এর স্ট্যাটাস পরিবর্তন করতে পারে।

var counter = 0
override fun onClick() {
    super.onClick()
    counter++
    qsTile.state = if (counter % 2 == 0) Tile.STATE_ACTIVE else Tile.STATE_INACTIVE
    qsTile.label = "Clicked $counter times"
    qsTile.contentDescription = qsTile.label
    qsTile.updateTile()
}

ডায়ালগ লঞ্চ করুন

showDialog() দ্রুত সেটিংস প্যানেলকে আড়াল করে এবং একটি ডায়ালগ দেখায়। আপনার অ্যাকশনে অতিরিক্ত ইনপুট বা ব্যবহারকারীর সম্মতি প্রয়োজন হলে, কন্টেক্সট যোগ করতে ডায়ালগ ব্যবহার করুন।

অ্যাক্টিভিটি লঞ্চ করা

startActivityAndCollapse() প্যানেলটি আড়াল করার সময় একটি অ্যাক্টিভিটি শুরু করে। ডায়ালগের মধ্যে দেখানোর চেয়ে আরও বিস্তারিত তথ্য দেখানোর প্রয়োজন হলে অথবা আপনার অ্যাকশন অত্যন্ত ইন্টার‍্যাক্টিভ হলে, অ্যাক্টিভিটি উপযোগী হয়।

আপনার অ্যাপে যদি ব্যবহারকারীর সাথে উল্লেখযোগ্য ইন্টার‍্যাকশনের প্রয়োজন হয়, তাহলে অ্যাপটি শুধুমাত্র শেষ উপায় হিসেবে কোনও অ্যাক্টিভিটি লঞ্চ করবে। পরিবর্তে, ডায়ালগ বা টগল ব্যবহার করার কথা বিবেচনা করুন।

কোনও টাইল বেশিক্ষণ ট্যাপ করে থাকলে, ব্যবহারকারীর জন্য অ্যাপের তথ্য স্ক্রিন প্রম্পট করা হয়। এই আচরণ ওভাররাইড করতে এবং পরিবর্তে পছন্দ সেট করার জন্য একটি অ্যাক্টিভিটি চালু করতে, ACTION_QS_TILE_PREFERENCES সহ আপনার একটি অ্যাক্টিভিটিতে <intent-filter> যোগ করুন।

Android API 28 থেকে শুরু করে, PendingIntent-এ অবশ্যই Intent.FLAG_ACTIVITY_NEW_TASK থাকতে হবে:

if (Build.VERSION.SDK_INT >= 28) {
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
}

বিকল্প হিসেবে, আপনি নির্দিষ্ট Activity বিভাগের AndroidManifest.xml-এ ফ্ল্যাগ যোগ করতে পারেন।

আপনার টাইল টগল করা যাবে হিসেবে চিহ্নিত করুন

আপনার টাইল যদি মূলত দুই-স্টেট সুইচ হিসেবে কাজ করে (যা টাইলের সবচেয়ে সাধারণ আচরণ), তাহলে আমরা আপনার টাইলকে টগলযোগ্য হিসেবে চিহ্নিত করার সাজেশন দিই। এটি অপারেটিং সিস্টেমকে টাইল কীভাবে কাজ করে সেই সম্পর্কে তথ্য প্রদান করতে এবং সামগ্রিক অ্যাক্সেসিবিলিটি উন্নত করতে সাহায্য করে।

আপনার টাইল টগল করার উপযুক্ত হিসেবে চিহ্নিত করতে TOGGLEABLE_TILE মেটাডেটা true-এ সেট করুন।

<service ...>
  <meta-data android:name="android.service.quicksettings.TOGGLEABLE_TILE"
    android:value="true" />
</service>

সুরক্ষিতভাবে লক করা ডিভাইসে শুধুমাত্র নিরাপদ অ্যাকশন পারফর্ম করুন

লক করা ডিভাইসে লক স্ক্রিনের উপরে আপনার টাইল দেখা যেতে পারে। টাইলে সংবেদনশীল তথ্য থাকলে, ডিভাইসটি নিরাপদ অবস্থায় আছে কিনা তা নির্ধারণ করতে isSecure()-এর ভ্যালু চেক করুন এবং আপনার TileService-কে সেই অনুযায়ী আচরণ পরিবর্তন করতে হবে।

লক করা অবস্থায় টাইল অ্যাকশন নিরাপদে করা গেলে, লক স্ক্রিনের উপরে অ্যাক্টিভিটি লঞ্চ করতে startActivity() ব্যবহার করুন।

টাইল অ্যাকশন নিরাপদ না হলে, ব্যবহারকারীকে তার ডিভাইস আনলক করার জন্য প্রম্পট করতে unlockAndRun() ব্যবহার করুন। সফল হলে, সিস্টেম এই পদ্ধতিতে আপনার পাস করা Runnable অবজেক্ট এক্সিকিউট করে।

আপনার টাইল ক্যাটাগরাইজ করুন

'দ্রুত সেটিংস' মেনুতে ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে, আপনি টাইল বিভাগ অনুযায়ী সাজাতে পারবেন। সিস্টেম, কানেক্টিভিটি, ডিসপ্লে ও গোপনীয়তার মতো বিভাগে টাইল সাজায়। সিস্টেম এইসব বিভাগ ব্যবহার করে 'দ্রুত সেটিংস' এডিট মোডে টাইল সাজায় ও গ্রুপ করে, যার ফলে ব্যবহারকারীরা সহজেই সেগুলি খুঁজে পান ও ম্যানেজ করতে পারেন।

প্রয়োগ

আপনার TileService-এর জন্য একটি বিভাগ নির্দিষ্ট করতে, AndroidManifest.xml ফাইলে পরিষেবার ঘোষণায় একটি মেটাডেটা ফিল্ড যোগ করুন:

  • আপনার AndroidManifest.xml-এ, আপনার TileService-এর জন্য <service> এলিমেন্টের মধ্যে, একটি <meta-data> এলিমেন্ট যোগ করুন।
  • android:name: এই ভ্যালু android.service.quicksettings.TILE_CATEGORY-এ সেট করুন।
  • android:value: আগে থেকে নির্ধারিত ক্যাটেগরি কনস্ট্যান্টের মধ্যে থেকে একটি অ্যাসাইন করুন, যেমন android.service.quicksettings.CATEGORY_CONNECTIVITY বা android.service.quicksettings.CATEGORY_DISPLAY।

নিচের উদাহরণে যেমন দেখানো হয়েছে:

<service
    android:name=".MyConnectivityTileService"
    [...]
    >
    <meta-data android:name="android.service.quicksettings.TILE_CATEGORY"
        android:value="android.service.quicksettings.CATEGORY_CONNECTIVITY" />
</service>

API বেছে নেওয়ার জন্য পূর্বনির্ধারিত বিভাগের একটি সেট প্রদান করে। এইসব বিভাগ TileService ক্লাসের মধ্যে স্ট্রিং কনস্ট্যান্ট হিসেবে সংজ্ঞায়িত করা হয়।

কোনও বিভাগ নির্দিষ্ট করা না থাকলে, সিস্টেম অটোমেটিক ডিফল্ট বিভাগ অ্যাসাইন করে:

  • সিস্টেম অ্যাপ থেকে: সিস্টেম অ্যাপ্লিকেশনের অংশ এমন টাইলসের জন্য।
  • আপনার ইনস্টল করা অ্যাপ থেকে: ব্যবহারকারীর ইনস্টল করা অ্যাপ্লিকেশন থেকে টাইলসের জন্য।

Google Pixel ডিভাইস 'দ্রুত সেটিংস'-এ বিভাগ ব্যবহার করলেও, OEM তাদের সংশ্লিষ্ট সিস্টেম UI-তে এই বিভাগের তথ্য ব্যবহার করতে বা উপেক্ষা করতে পারে।

ব্যবহারকারীকে আপনার টাইল যোগ করার জন্য প্রম্পট করুন

ম্যানুয়ালি আপনার টাইল যোগ করতে, ব্যবহারকারীকে অবশ্যই কয়েকটি ধাপ অনুসরণ করতে হবে:

  1. 'দ্রুত সেটিংস' প্যানেল খুলতে নিচের দিকে সোয়াইপ করুন।
  2. এডিট বোতামে ট্যাপ করুন।
  3. আপনার টাইল খুঁজে না পাওয়া পর্যন্ত তার ডিভাইসের সব টাইল স্ক্রল করুন।
  4. আপনার টাইল প্রেস করে ধরে থাকুন এবং অ্যাক্টিভ টাইলের তালিকায় টেনে আনুন।

এছাড়াও, ব্যবহারকারী যেকোনও সময় আপনার টাইল সরাতে বা মুছে দিতে পারবেন।

Android 13 থেকে শুরু করে, আপনি requestAddTileService() পদ্ধতি ব্যবহার করতে পারেন যাতে ব্যবহারকারীরা ডিভাইসে আপনার টাইল আরও সহজে যোগ করতে পারেন। এই পদ্ধতি ব্যবহারকারীদের তাদের 'দ্রুত সেটিংস' প্যানেলে সরাসরি আপনার টাইল দ্রুত যোগ করার জন্য অনুরোধের মাধ্যমে প্রম্পট করে। প্রম্পটে অ্যাপ্লিকেশনের নাম, প্রদত্ত লেবেল এবং আইকন অন্তর্ভুক্ত থাকে।

কুইক সেটিংস প্লেসমেন্ট API প্রম্পট
ছবি ৫. দ্রুত সেটিংস প্লেসমেন্ট API প্রম্পট।
public void requestAddTileService (
  ComponentName tileServiceComponentName,
  CharSequence tileLabel,
  Icon icon,
  Executor resultExecutor,
  Consumer<Integer> resultCallback
)

কলব্যাকে টাইল যোগ করা হয়েছে কিনা, যোগ করা হয়নি, আগে থেকেই ছিল কিনা বা কোনও সমস্যা হয়েছে কিনা সেই সংক্রান্ত তথ্য থাকে।

ব্যবহারকারীদের কখন এবং কত ঘন ঘন প্রম্পট করতে হবে তা সিদ্ধান্ত নেওয়ার সময় আপনার বিচক্ষণতা ব্যবহার করুন। আমরা সাজেস্ট করি যে requestAddTileService() শুধুমাত্র প্রাসঙ্গিক ক্ষেত্রে কল করুন, যেমন ব্যবহারকারী যখন প্রথমবার আপনার টাইল দ্বারা সহজতর করা কোনও ফিচারের সাথে ইন্টার‍্যাক্ট করেন।

ব্যবহারকারী আগে যথেষ্ট সংখ্যক বার কোনও নির্দিষ্ট ComponentName-এর জন্য অনুরোধ প্রত্যাখ্যান করলে, সিস্টেম সেই অনুরোধ প্রসেস করা বন্ধ করার সিদ্ধান্ত নিতে পারে। এই পরিষেবা ফেরত পেতে ব্যবহার করা Context থেকে ব্যবহারকারীকে নির্ধারণ করা হয়: এটি বর্তমান ব্যবহারকারীর সাথে মিলতে হবে।