สร้างการ์ดการตั้งค่าด่วนที่กำหนดเองสำหรับแอป

การตั้งค่าด่วนคือไทล์ที่แสดงในแผงการตั้งค่าด่วน ซึ่งแสดงถึงการดำเนินการที่ผู้ใช้แตะเพื่อทำงานที่เกิดซ้ำให้เสร็จอย่างรวดเร็วได้ แอปของคุณสามารถแสดงไทล์ที่กำหนดเองแก่ผู้ใช้ผ่านคลาส TileService และใช้ออบเจ็กต์ Tile เพื่อติดตามสถานะของไทล์ เช่น คุณสามารถสร้างไทล์ที่ให้ผู้ใช้เปิดหรือปิด VPN ที่แอปของคุณให้บริการได้

แผงการตั้งค่าด่วนที่มีการ์ด VPN เปิดและปิดอยู่
รูปที่ 1 แผงการตั้งค่าด่วนที่มีการ์ด VPN เปิด และปิด

เลือกเวลาที่ต้องการสร้างไทล์

เราขอแนะนำให้สร้างไทล์สำหรับฟังก์ชันการทำงานที่เฉพาะเจาะจงซึ่งคุณคาดหวังให้ผู้ใช้ เข้าถึงบ่อยๆ หรือต้องการเข้าถึงอย่างรวดเร็ว (หรือทั้ง 2 อย่าง) ไทล์ที่มีประสิทธิภาพมากที่สุด คือไทล์ที่มีคุณสมบัติทั้ง 2 อย่างนี้ ซึ่งช่วยให้เข้าถึง การดำเนินการที่ทำบ่อยได้อย่างรวดเร็ว

เช่น คุณอาจสร้างไทล์สำหรับแอปฟิตเนสที่ช่วยให้ผู้ใช้เริ่มเซสชันการออกกำลังกายได้อย่างรวดเร็ว อย่างไรก็ตาม เราไม่แนะนำให้สร้างไทล์ สำหรับแอปเดียวกันซึ่งจะอนุญาตให้ผู้ใช้ตรวจสอบประวัติการออกกำลังกายทั้งหมด

กรณีการใช้งานการ์ดแอปฟิตเนส
รูปที่ 2 ตัวอย่างไทล์ที่แนะนำและไม่แนะนำสำหรับแอปฟิตเนส

เราขอแนะนำให้หลีกเลี่ยงแนวทางปฏิบัติบางอย่างเพื่อช่วยปรับปรุงการค้นพบและการใช้งานที่ง่ายของไทล์

  • หลีกเลี่ยงการใช้ไทล์เพื่อเปิดแอป ให้ใช้ทางลัดของแอปหรือตัวเรียกใช้มาตรฐานแทน

  • หลีกเลี่ยงการใช้ไทล์สำหรับการดำเนินการของผู้ใช้แบบครั้งเดียว ใช้ทางลัดของแอปหรือการแจ้งเตือนแทน

  • หลีกเลี่ยงการสร้างไทล์มากเกินไป เราขอแนะนำให้ใช้ได้สูงสุด 2 รายการต่อแอป ใช้ ทางลัดของแอปแทน

  • หลีกเลี่ยงการใช้ไทล์ที่แสดงข้อมูลแต่ผู้ใช้โต้ตอบไม่ได้ โปรดใช้การแจ้งเตือนหรือวิดเจ็ตแทน

สร้างไทล์

หากต้องการสร้างการ์ด คุณต้องสร้างไอคอนการ์ดที่เหมาะสมก่อน จากนั้น สร้างและประกาศ TileService ในไฟล์ Manifest ของแอป

ตัวอย่างการตั้งค่าด่วนแสดงตัวอย่างวิธีสร้าง และจัดการการ์ด

สร้างไอคอนที่กำหนดเอง

คุณจะต้องระบุไอคอนที่กำหนดเองซึ่งจะแสดงบนไทล์ในแผงการตั้งค่าด่วน (คุณจะเพิ่มไอคอนนี้เมื่อประกาศ TileService, ตามที่อธิบายไว้ในส่วนถัดไป) ไอคอนต้องเป็นสีขาวทึบที่มี พื้นหลังโปร่งใส มีขนาด 24 x 24dp และอยู่ในรูปแบบ VectorDrawable

ตัวอย่าง Vector Drawable
รูปที่ 3 ตัวอย่าง Vector Drawable

สร้างไอคอนที่สื่อถึงวัตถุประสงค์ของไทล์ด้วยภาพ ซึ่งจะช่วยให้ผู้ใช้ ระบุได้ง่ายๆ ว่าไทล์ของคุณตรงกับความต้องการหรือไม่ ตัวอย่างเช่น คุณอาจสร้างไอคอนนาฬิกาจับเวลาสำหรับไทล์ของแอปฟิตเนสที่อนุญาตให้ผู้ใช้เริ่มเซสชันการออกกำลังกาย

สร้างและประกาศ TileService

สร้างบริการสำหรับไทล์ที่ขยายคลาส TileService

Kotlin

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()
  }
}

Java

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 ในไฟล์ Manifest ของแอป เพิ่มชื่อและป้ายกำกับ ของ 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 ในไฟล์ Manifest ของแอปแล้ว คุณ จะต้องจัดการสถานะของ

TileService เป็นบริการที่มีผลผูกพัน ระบบจะเชื่อมโยง TileService เมื่อ แอปของคุณขอหรือหากระบบจำเป็นต้องสื่อสารกับ วงจรของบริการที่เชื่อมโยงโดยทั่วไปจะมีเมธอดเรียกกลับ 4 รายการต่อไปนี้ onCreate(), onBind(), onUnbind() และ onDestroy() ระบบจะเรียกใช้เมธอดเหล่านี้ทุกครั้งที่ บริการเข้าสู่ระยะวงจรใหม่

ภาพรวมวงจรของ TileService

นอกเหนือจากคอลแบ็กที่ควบคุมวงจรของบริการที่เชื่อมโยงแล้ว คุณต้อง ใช้เมธอดอื่นๆ ที่เฉพาะเจาะจงกับวงจรของ TileService เมธอดเหล่านี้ อาจเรียกใช้นอก onCreate() และ onDestroy() เนื่องจากเมธอดวงจร Service และเมธอดวงจร TileService จะเรียกใช้ใน 2 เธรดแบบอะซิงโครนัสที่แยกกัน

TileServiceวงจรประกอบด้วยเมธอดต่อไปนี้ ซึ่งระบบจะเรียกใช้ ทุกครั้งที่ TileService เข้าสู่ระยะวงจรใหม่

  • onTileAdded(): ระบบจะเรียกใช้เมธอดนี้เมื่อผู้ใช้เพิ่มไทล์ของคุณเป็นครั้งแรก และเมื่อผู้ใช้นำไทล์ของคุณออกแล้วเพิ่มอีกครั้ง นี่เป็นเวลาที่ดีที่สุดในการเริ่มต้นแบบครั้งเดียว อย่างไรก็ตาม วิธีนี้อาจ ไม่ตอบโจทย์การเริ่มต้นที่จำเป็นทั้งหมด

  • onStartListening() และ onStopListening(): ระบบจะเรียกใช้เมธอดเหล่านี้ ทุกครั้งที่แอปอัปเดตไทล์ และจะเรียกใช้บ่อย TileServiceจะยังคงเชื่อมโยงระหว่าง onStartListening() กับ onStopListening() ซึ่งจะช่วยให้แอปของคุณแก้ไขไทล์และพุชการอัปเดตได้

  • onTileRemoved(): วิธีนี้จะเรียกใช้ก็ต่อเมื่อผู้ใช้นำไทล์ของคุณออกเท่านั้น

เลือกโหมดการฟัง

TileService จะฟังในโหมดทำงานหรือโหมดไม่ทำงาน เราขอแนะนำให้ใช้โหมดแอ็กทีฟ ซึ่งคุณจะต้องประกาศในไฟล์ Manifest ของแอป มิฉะนั้น TileService จะเป็นโหมดมาตรฐานและไม่จำเป็นต้องประกาศ

อย่าคิดว่า TileService จะอยู่นอก onStartListening() และ onStopListening()

ใช้โหมดแอ็กทีฟสำหรับ TileService ที่รับฟังและตรวจสอบสถานะในกระบวนการของตัวเอง TileService ในโหมดแอ็กทีฟจะผูกกับ onTileAdded() onTileRemoved() เหตุการณ์การแตะ และเมื่อกระบวนการของแอปขอ

เราขอแนะนำให้ใช้โหมดแอ็กทีฟหาก TileService ได้รับการแจ้งเตือนเมื่อสถานะการ์ดควรได้รับการอัปเดตโดยกระบวนการของตัวเอง Active Tile ช่วยลดภาระของระบบเนื่องจากไม่จำเป็นต้องผูกทุกครั้งที่แผงการตั้งค่าด่วนปรากฏต่อผู้ใช้

สามารถเรียกใช้เมธอดแบบคงที่ TileService.requestListeningState() เพื่อ ขอเริ่มสถานะการฟังและรับการเรียกกลับไปยัง onStartListening()

คุณประกาศโหมดแอ็กทีฟได้โดยเพิ่ม META_DATA_ACTIVE_TILE ลงในไฟล์ Manifest ของแอป

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

โหมดไม่ได้ใช้งาน

โหมดที่ไม่ได้ใช้งานคือโหมดมาตรฐาน TileService จะอยู่ในโหมดไม่ใช้งานในกรณีต่อไปนี้ จะผูกเมื่อใดก็ตามที่ไทล์ของคุณปรากฏต่อผู้ใช้ ซึ่งหมายความว่า TileServiceอาจสร้างและผูกอีกครั้งในบางครั้งที่อยู่นอกเหนือการควบคุม นอกจากนี้ยังอาจยกเลิกการเชื่อมโยงและทำลายเมื่อผู้ใช้ไม่ได้ดูไทล์

แอปจะได้รับการเรียกกลับไปยัง onStartListening() หลังจากที่ผู้ใช้เปิดแผงการตั้งค่าด่วน คุณอัปเดตออบเจ็กต์ Tile ได้กี่ครั้งก็ได้ตามที่ต้องการระหว่างวันที่ onStartListening() ถึง onStopListening()

คุณไม่จำเป็นต้องประกาศโหมดที่ไม่ได้ใช้งาน เพียงแค่ไม่ต้องเพิ่ม META_DATA_ACTIVE_TILE ลงในไฟล์ Manifest ของแอป

ภาพรวมสถานะของไทล์

หลังจากที่ผู้ใช้เพิ่มไทล์ของคุณแล้ว ไทล์จะอยู่ในสถานะใดสถานะหนึ่งต่อไปนี้เสมอ

  • STATE_ACTIVE: แสดงสถานะเปิดหรือเปิดใช้ ผู้ใช้จะโต้ตอบกับไทล์ได้ขณะอยู่ในสถานะนี้

    ตัวอย่างเช่น สำหรับการ์ดแอปฟิตเนสที่ให้ผู้ใช้เริ่มเซสชันการออกกำลังกายแบบกำหนดเวลา STATE_ACTIVE จะหมายความว่าผู้ใช้ได้เริ่มเซสชันการออกกำลังกายและตัวจับเวลาทำงานอยู่

  • STATE_INACTIVE: แสดงสถานะปิดหรือหยุดชั่วคราว ผู้ใช้จะโต้ตอบกับไทล์ได้ขณะอยู่ในสถานะนี้

    หากใช้ตัวอย่างไทล์แอปฟิตเนสอีกครั้ง ไทล์ใน STATE_INACTIVE จะ หมายความว่าผู้ใช้ยังไม่ได้เริ่มเซสชันการออกกำลังกาย แต่สามารถทำได้หาก ต้องการ

  • STATE_UNAVAILABLE: แสดงสถานะที่ไม่พร้อมใช้งานชั่วคราว ผู้ใช้จะโต้ตอบกับไทล์ของคุณไม่ได้ขณะอยู่ในสถานะนี้

    เช่น ไทล์ใน STATE_UNAVAILABLE หมายความว่าไทล์นั้นไม่พร้อมใช้งานสำหรับผู้ใช้ในขณะนี้ด้วยเหตุผลบางอย่าง

ระบบจะตั้งค่าสถานะเริ่มต้นของออบเจ็กต์ Tile เท่านั้น คุณตั้งค่าTile สถานะของออบเจ็กต์ตลอดช่วงเวลาที่เหลือของวงจร

ระบบอาจเปลี่ยนสีไอคอนและการเปลี่ยนสีพื้นหลังของไทล์เพื่อแสดงสถานะของออบเจ็กต์ Tile Tile ออบเจ็กต์ที่ตั้งค่าเป็น STATE_ACTIVE จะเข้มที่สุด โดยมี STATE_INACTIVE และ STATE_UNAVAILABLE ที่สว่างขึ้นเรื่อยๆ เฉดสีที่แน่นอน จะขึ้นอยู่กับผู้ผลิตและเวอร์ชัน

การ์ด VPN จะมีสีตามสถานะของออบเจ็กต์
รูปที่ 4 ตัวอย่างไทล์ที่ปรับสีเพื่อแสดงสถานะของไทล์ (สถานะที่ใช้งานอยู่ ไม่ได้ใช้งาน และไม่พร้อมใช้งานตามลำดับ)

อัปเดตไทล์

คุณอัปเดตไทล์ได้เมื่อได้รับสายโทรกลับที่ onStartListening() ไทล์จะอัปเดตได้อย่างน้อย 1 ครั้งจนกว่าจะได้รับการเรียกกลับไปยัง onStopListening() ทั้งนี้ขึ้นอยู่กับโหมดของไทล์

ในโหมดแอ็กทีฟ คุณจะอัปเดตไทล์ได้ 1 ครั้งก่อนที่จะได้รับการเรียกกลับไปยัง onStopListening() ในโหมดที่ไม่ได้ใช้งาน คุณสามารถอัปเดตไทล์ได้หลายครั้งตามต้องการระหว่าง onStartListening() ถึง onStopListening()

คุณสามารถเรียกข้อมูลออบเจ็กต์ Tile ได้โดยเรียกใช้ getQsTile() หากต้องการอัปเดตฟิลด์ที่เฉพาะเจาะจงของออบเจ็กต์ Tile ให้เรียกใช้เมธอดต่อไปนี้

คุณต้องเรียกใช้ updateTile() เพื่ออัปเดตไทล์เมื่อตั้งค่าฟิลด์ของออบเจ็กต์ Tile เป็นค่าที่ถูกต้องแล้ว ซึ่งจะทำให้ระบบ แยกวิเคราะห์ข้อมูลไทล์ที่อัปเดตแล้วและอัปเดต UI

Kotlin

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()
}

Java

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() แล้ว แอปจะเปิดกล่องโต้ตอบหรือกิจกรรม เรียกใช้การทำงานในเบื้องหลัง หรือเปลี่ยนสถานะของไทล์ได้

Kotlin

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()
}

Java

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() จะเริ่มกิจกรรมขณะยุบแผง กิจกรรมมีประโยชน์ในกรณีที่มีข้อมูลโดยละเอียดเพิ่มเติมที่จะแสดง นอกเหนือจากในกล่องโต้ตอบ หรือหากการดำเนินการของคุณมีการโต้ตอบสูง

หากแอปต้องมีการโต้ตอบกับผู้ใช้จำนวนมาก แอปควรเปิด กิจกรรมเป็นทางเลือกสุดท้ายเท่านั้น แต่ให้ลองใช้กล่องโต้ตอบหรือสวิตช์แทน

การแตะการ์ดค้างไว้จะแสดงหน้าจอข้อมูลแอปแก่ผู้ใช้ หากต้องการลบล้างลักษณะการทำงานนี้และเปิดใช้กิจกรรมสำหรับการตั้งค่ากำหนดแทน ให้เพิ่ม <intent-filter> ลงในกิจกรรมรายการใดรายการหนึ่งด้วย ACTION_QS_TILE_PREFERENCES

ตั้งแต่ Android API 28 เป็นต้นไป PendingIntent ต้อง มี Intent.FLAG_ACTIVITY_NEW_TASK ดังนี้

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

หรือคุณจะเพิ่มแฟล็กในส่วนAndroidManifest.xmlในActivityส่วนที่เฉพาะเจาะจงก็ได้

ทำเครื่องหมายไทล์ว่าสลับได้

เราขอแนะนำให้ทำเครื่องหมายไทล์เป็นแบบสลับได้หากไทล์ทำงานเป็นสวิตช์ 2 สถานะเป็นหลัก (ซึ่งเป็นลักษณะการทำงานที่พบได้บ่อยที่สุดของไทล์) ซึ่งจะช่วย ให้ข้อมูลเกี่ยวกับลักษณะการทำงานของไทล์แก่ระบบปฏิบัติการและ ปรับปรุงการช่วยเหลือพิเศษโดยรวม

ตั้งค่าข้อมูลเมตา 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 ภายในองค์ประกอบ <service> สำหรับ TileService ให้เพิ่มองค์ประกอบ <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() เพื่อให้ผู้ใช้เพิ่มไทล์ของคุณลงในอุปกรณ์ได้ง่ายขึ้น วิธีนี้ จะแจ้งให้ผู้ใช้ทราบถึงคำขอให้เพิ่มการ์ดของคุณลงในแผงการตั้งค่าด่วน โดยตรงอย่างรวดเร็ว พรอมต์ประกอบด้วยชื่อแอป ป้ายกำกับที่ระบุ และไอคอน

ข้อความแจ้ง Quick Settings Placement API
รูปที่ 5 ข้อความแจ้งของ Quick Settings Placement API
public void requestAddTileService (
  ComponentName tileServiceComponentName,
  CharSequence tileLabel,
  Icon icon,
  Executor resultExecutor,
  Consumer<Integer> resultCallback
)

โดยการเรียกกลับจะมีข้อมูลว่ามีการเพิ่มไทล์หรือไม่ ไม่ได้เพิ่มไทล์ หากมีไทล์อยู่แล้ว หรือหากเกิดข้อผิดพลาด

โปรดใช้วิจารณญาณในการตัดสินใจว่าจะแจ้งให้ผู้ใช้ทราบเมื่อใดและบ่อยเพียงใด เราขอแนะนำให้เรียกใช้ requestAddTileService() เฉพาะในบริบท เช่น เมื่อผู้ใช้โต้ตอบกับฟีเจอร์ที่ไทล์ของคุณอำนวยความสะดวกเป็นครั้งแรก

ระบบอาจเลือกที่จะหยุดประมวลผลคำขอสำหรับ ComponentName ที่กำหนด หากผู้ใช้ปฏิเสธคำขอดังกล่าวหลายครั้งก่อนหน้านี้ ระบบจะระบุผู้ใช้จาก Context ที่ใช้เพื่อเรียกข้อมูลบริการนี้ ซึ่งต้องตรงกับผู้ใช้ปัจจุบัน