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

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

আপনার টাইলের সহজে খুঁজে পাওয়ার সুবিধা ও ব্যবহার সহজ করার জন্য, আমরা কিছু নির্দিষ্ট অভ্যাস পরিহার করার পরামর্শ দিই:
অ্যাপ চালু করার জন্য টাইলস ব্যবহার করা থেকে বিরত থাকুন। এর পরিবর্তে অ্যাপ শর্টকাট বা স্ট্যান্ডার্ড লঞ্চার ব্যবহার করুন।
এককালীন কাজের জন্য টাইল ব্যবহার করা থেকে বিরত থাকুন। এর পরিবর্তে অ্যাপ শর্টকাট বা নোটিফিকেশন ব্যবহার করুন।
অতিরিক্ত টাইল তৈরি করা থেকে বিরত থাকুন। আমরা প্রতিটি অ্যাপের জন্য সর্বোচ্চ দুটি টাইল ব্যবহারের পরামর্শ দিই। এর পরিবর্তে অ্যাপ শর্টকাট ব্যবহার করুন।
এমন টাইল ব্যবহার করা থেকে বিরত থাকুন যা তথ্য প্রদর্শন করে, কিন্তু ব্যবহারকারীদের জন্য ইন্টারেক্টিভ নয়। এর পরিবর্তে একটি নোটিফিকেশন বা উইজেট ব্যবহার করুন।
আপনার টাইল তৈরি করুন
একটি টাইল তৈরি করতে, আপনাকে প্রথমে একটি উপযুক্ত টাইল আইকন তৈরি করতে হবে, তারপর আপনার অ্যাপের ম্যানিফেস্ট ফাইলে আপনার TileService তৈরি ও ডিক্লেয়ার করতে হবে।
কুইক সেটিংস নমুনাটি একটি টাইল কীভাবে তৈরি এবং পরিচালনা করতে হয় তার একটি উদাহরণ প্রদান করে।
আপনার নিজস্ব আইকন তৈরি করুন
আপনাকে একটি কাস্টম আইকন সরবরাহ করতে হবে, যা কুইক সেটিংস প্যানেলের টাইলে প্রদর্শিত হবে। (পরবর্তী বিভাগে বর্ণিত TileService ডিক্লেয়ার করার সময় আপনি এই আইকনটি যোগ করবেন।) আইকনটি অবশ্যই স্বচ্ছ ব্যাকগ্রাউন্ডসহ নিরেট সাদা হতে হবে, এর পরিমাপ হবে ২৪ x ২৪ ডিপি এবং এটি একটি VectorDrawable ফরম্যাটে থাকবে।

এমন একটি আইকন তৈরি করুন যা আপনার টাইলের উদ্দেশ্য সম্পর্কে দৃশ্যত ইঙ্গিত দেয়। এটি ব্যবহারকারীদের সহজেই শনাক্ত করতে সাহায্য করে যে আপনার টাইলটি তাদের প্রয়োজন মেটাতে সক্ষম কিনা। উদাহরণস্বরূপ, আপনি একটি ফিটনেস অ্যাপের টাইলের জন্য স্টপওয়াচের আইকন তৈরি করতে পারেন, যা ব্যবহারকারীদের একটি ওয়ার্কআউট সেশন শুরু করার সুযোগ দেয়।
আপনার টাইলসার্ভিস তৈরি এবং ঘোষণা করুন
আপনার টাইলের জন্য একটি সার্ভিস তৈরি করুন যা 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() } }
জাভা
public class MyQSTileService extends TileService { // Called when the user adds your tile. @Override public void onTileAdded() { super.onTileAdded(); } // Called when your app can update your tile. @Override public void onStartListening() { super.onStartListening(); } // Called when your app can no longer update your tile. @Override public void onStopListening() { super.onStopListening(); } // Called when the user taps on your tile in an active or inactive state. @Override public void onClick() { super.onClick(); } // Called when the user removes your tile. @Override public void onTileRemoved() { super.onTileRemoved(); } }
আপনার অ্যাপের ম্যানিফেস্ট ফাইলে আপনার TileService ডিক্লেয়ার করুন। আপনার TileService এর নাম ও লেবেল, পূর্ববর্তী বিভাগে তৈরি করা কাস্টম আইকন এবং উপযুক্ত পারমিশন যোগ করুন।
<service
android:name=".MyQSTileService"
android:exported="true"
android:label="@string/my_default_tile_label" // 18-character limit.
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 বাউন্ড হয়। একটি সাধারণ বাউন্ড-সার্ভিসের লাইফসাইকেলে নিম্নলিখিত চারটি কলব্যাক মেথড থাকে: onCreate() , onBind() , onUnbind() , এবং onDestroy() । প্রতিবার সার্ভিসটি একটি নতুন লাইফসাইকেল পর্যায়ে প্রবেশ করার সময় সিস্টেম এই মেথডগুলোকে কল করে।
টাইলসার্ভিস জীবনচক্রের সংক্ষিপ্ত বিবরণ
বাউন্ড-সার্ভিসের লাইফসাইকেল নিয়ন্ত্রণকারী কলব্যাকগুলো ছাড়াও, আপনাকে অবশ্যই TileService লাইফসাইকেলের জন্য নির্দিষ্ট অন্যান্য মেথড ইমপ্লিমেন্ট করতে হবে। এই মেথডগুলো onCreate() এবং onDestroy() এর বাইরেও কল করা যেতে পারে, কারণ Service লাইফসাইকেল মেথড এবং TileService লাইফসাইকেল মেথড দুটি পৃথক অ্যাসিঙ্ক্রোনাস থ্রেডে কল করা হয়।
TileService লাইফসাইকেলে নিম্নলিখিত মেথডগুলো রয়েছে, যেগুলো আপনার TileService প্রতিবার একটি নতুন লাইফসাইকেল পর্যায়ে প্রবেশ করার সময় সিস্টেম দ্বারা আহ্বান করা হয়:
onTileAdded(): এই মেথডটি শুধুমাত্র তখনই কল করা হয় যখন ব্যবহারকারী প্রথমবারের মতো আপনার টাইলটি যোগ করেন, এবং যদি ব্যবহারকারী আপনার টাইলটি সরিয়ে আবার যোগ করেন। যেকোনো এককালীন ইনিশিয়ালাইজেশন করার জন্য এটিই সেরা সময়। তবে, এটি প্রয়োজনীয় সমস্ত ইনিশিয়ালাইজেশন সম্পন্ন করতে নাও পারে।onStartListening()এবংonStopListening(): যখনই আপনার অ্যাপ টাইলটি আপডেট করে, তখনই এই মেথডগুলো কল করা হয় এবং এগুলো প্রায়শই কল করা হয়।onStartListening()এবংonStopListening()এর মধ্যবর্তী সময়েTileServiceটি আবদ্ধ থাকে, যা আপনার অ্যাপকে টাইলটি পরিবর্তন করতে এবং আপডেটগুলো পুশ করার সুযোগ দেয়।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 অবজেক্টের অবস্থা প্রতিফলিত করতে টাইল আইকন এবং ব্যাকগ্রাউন্ডে একটি হালকা আভা দিতে পারে। STATE_ACTIVE অবস্থায় থাকা Tile অবজেক্টগুলো সবচেয়ে গাঢ় হয়, এবং STATE_INACTIVE ও STATE_UNAVAILABLE থাকলে তা ক্রমান্বয়ে হালকা হতে থাকে। এর সঠিক আভা প্রস্তুতকারক এবং সংস্করণের উপর নির্ভর করে।

আপনার টাইল আপডেট করুন
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 = tile.label qsTile.state = if (state.enabled) Tile.STATE_ACTIVE else Tile.STATE_INACTIVE qsTile.icon = state.icon qsTile.updateTile() }
জাভা
public class StateModel { final boolean enabled; final String label; final Icon icon; public StateModel(boolean e, String l, Icon i) { enabled = e; label = l; icon = i; } } @Override public void onStartListening() { super.onStartListening(); StateModel state = getStateFromService(); Tile tile = getQsTile(); tile.setLabel(state.label); tile.setContentDescription(state.label); tile.setState(state.enabled ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE); tile.setIcon(state.icon); tile.updateTile(); }
হ্যান্ডেল ট্যাপ
আপনার টাইলটি STATE_ACTIVE বা STATE_INACTIVE অবস্থায় থাকলে, ব্যবহারকারীরা কোনো অ্যাকশন চালু করার জন্য সেটিতে ট্যাপ করতে পারেন। এরপর সিস্টেমটি আপনার অ্যাপের onClick() কলব্যাকটি চালু করে।
আপনার অ্যাপ একবার onClick() কলব্যাক পেলে, এটি একটি ডায়ালগ বা অ্যাক্টিভিটি চালু করতে, ব্যাকগ্রাউন্ডের কাজ শুরু করতে, অথবা আপনার টাইলের অবস্থা পরিবর্তন করতে পারে।
কোটলিন
var clicks = 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() }
জাভা
int clicks = 0; @Override public void onClick() { super.onClick(); counter++; Tile tile = getQsTile(); tile.setState((counter % 2 == 0) ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE); tile.setLabel("Clicked " + counter + " times"); tile.setContentDescription(tile.getLabel()); tile.updateTile(); }
একটি সংলাপ শুরু করুন
showDialog() কুইক সেটিংস প্যানেলটি বন্ধ করে দেয় এবং একটি ডায়ালগ বক্স দেখায়। আপনার কাজের জন্য যদি অতিরিক্ত ইনপুট বা ব্যবহারকারীর সম্মতির প্রয়োজন হয়, তবে সেটির প্রাসঙ্গিকতা যোগ করতে একটি ডায়ালগ বক্স ব্যবহার করুন।
একটি কার্যকলাপ শুরু করুন
startActivityAndCollapse() প্যানেলটি সংকুচিত করার সাথে সাথে একটি অ্যাক্টিভিটি শুরু করে। ডায়ালগের চেয়ে আরও বিস্তারিত তথ্য প্রদর্শনের প্রয়োজন হলে, অথবা আপনার কাজটি অত্যন্ত ইন্টারেক্টিভ হলে অ্যাক্টিভিটিগুলো উপযোগী।
যদি আপনার অ্যাপে ব্যবহারকারীর উল্লেখযোগ্য মিথস্ক্রিয়ার প্রয়োজন হয়, তবে অ্যাপটি শুধুমাত্র শেষ উপায় হিসেবেই কোনো অ্যাক্টিভিটি চালু করবে। এর পরিবর্তে, একটি ডায়ালগ বা টগল ব্যবহার করার কথা বিবেচনা করুন।
কোনো টাইলে লং-ট্যাপ করলে ব্যবহারকারীর জন্য অ্যাপ ইনফো স্ক্রিনটি প্রদর্শিত হয়। এই আচরণটি পরিবর্তন করে তার পরিবর্তে প্রেফারেন্স সেট করার জন্য একটি অ্যাক্টিভিটি চালু করতে, আপনার যেকোনো একটি অ্যাক্টিভিটিতে ACTION_QS_TILE_PREFERENCES সহ একটি <intent-filter> যোগ করুন।
অ্যান্ড্রয়েড এপিআই ২৮ থেকে শুরু করে, PendingIntent অবশ্যই Intent.FLAG_ACTIVITY_NEW_TASK থাকতে হবে।
if (Build.VERSION.SDK_INT >= 28) {
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
বিকল্পভাবে আপনি AndroidManifest.xml ফাইলের নির্দিষ্ট Activity সেকশনে ফ্ল্যাগটি যোগ করতে পারেন।
আপনার টাইলটিকে টগলযোগ্য হিসেবে চিহ্নিত করুন।
যদি আপনার টাইলটি প্রাথমিকভাবে একটি দ্বি-অবস্থার সুইচ হিসেবে কাজ করে (যা টাইলগুলোর সবচেয়ে সাধারণ আচরণ), তবে আমরা সেটিকে টগলযোগ্য হিসেবে চিহ্নিত করার পরামর্শ দিই। এটি অপারেটিং সিস্টেমকে টাইলটির আচরণ সম্পর্কে তথ্য সরবরাহ করতে এবং সামগ্রিক অ্যাক্সেসিবিলিটি উন্নত করতে সহায়তা করে।
আপনার টাইলটিকে টগলযোগ্য হিসেবে চিহ্নিত করতে 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>
এপিআইটি বেছে নেওয়ার জন্য কিছু পূর্বনির্ধারিত ক্যাটাগরি প্রদান করে। এই ক্যাটাগরিগুলো TileService ক্লাসের মধ্যে স্ট্রিং কনস্ট্যান্ট হিসেবে সংজ্ঞায়িত করা থাকে।
যদি কোনো বিভাগ নির্দিষ্ট করা না থাকে, তাহলে সিস্টেম স্বয়ংক্রিয়ভাবে একটি পূর্বনির্ধারিত বিভাগ নির্ধারণ করে দেয়:
- সিস্টেম অ্যাপ থেকে: যে টাইলগুলো কোনো সিস্টেম অ্যাপ্লিকেশনের অংশ, সেগুলোর জন্য।
- আপনার ইনস্টল করা অ্যাপগুলো থেকে: ব্যবহারকারী-ইনস্টল করা অ্যাপ্লিকেশনগুলোর টাইলগুলোর জন্য।
যদিও গুগল পিক্সেল ডিভাইসগুলো কুইক সেটিংসে ক্যাটাগরি ব্যবহার করে, প্রস্তুতকারক সংস্থাগুলো তাদের নিজ নিজ সিস্টেম ইউআই-তে এই ক্যাটাগরির তথ্য ব্যবহার করতে বা উপেক্ষা করতে পারে।
ব্যবহারকারীকে আপনার টাইল যোগ করতে বলুন।
ম্যানুয়ালি আপনার টাইল যোগ করতে, ব্যবহারকারীদের কয়েকটি ধাপ অনুসরণ করতে হবে:
- কুইক সেটিংস প্যানেলটি খুলতে নিচে সোয়াইপ করুন।
- সম্পাদনা বোতামটি ট্যাপ করুন।
- তারা তাদের ডিভাইসের সমস্ত টাইল স্ক্রল করতে থাকবে যতক্ষণ না আপনার টাইলটি খুঁজে পায়।
- আপনার টাইলটি চেপে ধরে সক্রিয় টাইলগুলির তালিকায় টেনে নিয়ে যান।
ব্যবহারকারী যেকোনো সময়ে আপনার টাইলটি সরাতে বা মুছে ফেলতে পারেন।
অ্যান্ড্রয়েড ১৩ থেকে, আপনি requestAddTileService() মেথডটি ব্যবহার করে ব্যবহারকারীদের জন্য ডিভাইসে আপনার টাইল যুক্ত করার কাজটি আরও সহজ করে তুলতে পারেন। এই মেথডটি ব্যবহারকারীদের কাছে আপনার টাইলটি সরাসরি তাদের কুইক সেটিংস প্যানেলে দ্রুত যুক্ত করার জন্য একটি অনুরোধ পাঠায়। এই অনুরোধে অ্যাপ্লিকেশনটির নাম, প্রদত্ত লেবেল এবং আইকন অন্তর্ভুক্ত থাকে।

public void requestAddTileService (
ComponentName tileServiceComponentName,
CharSequence tileLabel,
Icon icon,
Executor resultExecutor,
Consumer<Integer> resultCallback
)
কলব্যাকে এই তথ্য থাকে যে টাইলটি যোগ করা হয়েছে কি না, যোগ করা হয়নি, সেটি আগে থেকেই সেখানে ছিল কি না, অথবা কোনো ত্রুটি ঘটেছে কি না।
ব্যবহারকারীদের কখন এবং কত ঘন ঘন প্রম্পট করবেন, সেই সিদ্ধান্ত নেওয়ার ক্ষেত্রে আপনার বিচক্ষণতা ব্যবহার করুন। আমরা শুধুমাত্র প্রাসঙ্গিক প্রেক্ষাপটে requestAddTileService() কল করার পরামর্শ দিই – যেমন, যখন ব্যবহারকারী প্রথমবারের মতো আপনার টাইল দ্বারা পরিচালিত কোনো ফিচারের সাথে ইন্টারঅ্যাক্ট করেন।
যদি কোনো নির্দিষ্ট ComponentName ব্যবহারকারী কর্তৃক পূর্বে যথেষ্ট সংখ্যকবার প্রত্যাখ্যাত হয়ে থাকে, তবে সিস্টেম সেই অনুরোধ প্রক্রিয়াকরণ বন্ধ করে দিতে পারে। এই পরিষেবাটি পুনরুদ্ধার করতে ব্যবহৃত Context থেকে ব্যবহারকারীকে নির্ধারণ করা হয়—এটি অবশ্যই বর্তমান ব্যবহারকারীর সাথে মিলতে হবে।