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

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

VPN টাইল সহ দ্রুত সেটিংস প্যানেল চালু এবং বন্ধ
চিত্র 1. VPN টাইল চালু এবং বন্ধ সহ দ্রুত সেটিংস প্যানেল৷

কখন একটি টাইল তৈরি করতে হবে তা নির্ধারণ করুন

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

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

ফিটনেস অ্যাপ টাইল ব্যবহারের ক্ষেত্রে
চিত্র 2. ফিটনেস অ্যাপের জন্য প্রস্তাবিত বনাম অ-প্রস্তাবিত টাইলসের উদাহরণ।

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

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

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

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

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

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

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

দ্রুত সেটিংস নমুনা একটি টাইল তৈরি এবং পরিচালনা করার একটি উদাহরণ প্রদান করে।

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

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

অঙ্কনযোগ্য ভেক্টরের উদাহরণ
চিত্র 3. অঙ্কনযোগ্য ভেক্টরের উদাহরণ।

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

আপনার 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()
  }
}

জাভা

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 একটি আবদ্ধ পরিষেবা । আপনার অ্যাপ দ্বারা অনুরোধ করা হলে বা সিস্টেমের সাথে যোগাযোগ করার প্রয়োজন হলে আপনার 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 বিজ্ঞপ্তি দেওয়া হয় যখন আপনার টাইলের অবস্থা তার নিজস্ব প্রক্রিয়া দ্বারা আপডেট করা উচিত। সক্রিয় টাইলগুলি সিস্টেমের চাপকে সীমিত করে কারণ প্রতিবার দ্রুত সেটিংস প্যানেল ব্যবহারকারীর কাছে দৃশ্যমান হওয়ার সময় তাদের আবদ্ধ হতে হবে না।

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

আপনি আপনার অ্যাপের ম্যানিফেস্ট ফাইলে 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 ক্রমবর্ধমানভাবে হালকা৷ সঠিক রঙ নির্মাতা এবং সংস্করণের জন্য নির্দিষ্ট।

VPN টাইল বস্তুর অবস্থা প্রতিফলিত করতে টিন্টেড
চিত্র 4. টাইলের অবস্থা প্রতিফলিত করার জন্য টাইলের উদাহরণ (যথাক্রমে সক্রিয়, নিষ্ক্রিয় এবং অনুপলব্ধ অবস্থা)।

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

একবার আপনি 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> যোগ করুন।

Android API 28 দিয়ে শুরু করে, PendingIntent অবশ্যই Intent.FLAG_ACTIVITY_NEW_TASK থাকতে হবে৷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 অবজেক্টটি চালায় যা আপনি এই পদ্ধতিতে পাস করেন।

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

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

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

ব্যবহারকারী যেকোনো সময়ে আপনার টাইল সরাতে বা সরাতে পারেন।

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

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

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

কখন এবং কত ঘন ঘন ব্যবহারকারীদের অনুরোধ করতে হবে তা নির্ধারণ করার সময় আপনার বিচক্ষণতা ব্যবহার করুন। আমরা শুধুমাত্র প্রেক্ষাপটে requestAddTileService() কল করার পরামর্শ দিই – যেমন যখন ব্যবহারকারী প্রথম কোনো বৈশিষ্ট্যের সাথে ইন্টারঅ্যাক্ট করে যা আপনার টাইল সুবিধা দেয়।

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