Wallet สำหรับการเข้าถึงด่วน

ฟีเจอร์ Quick Access Wallet มีให้บริการจาก Android 11 ช่วยให้ผู้ใช้ เข้าถึงบัตรสำหรับชำระเงินและบัตรผ่านที่เกี่ยวข้องได้โดยตรงจากเมนูเปิด/ปิด การใช้งานหลัก ประกอบด้วยการเลือกวิธีการชำระเงินที่เหมาะสมก่อนดำเนินการ ทำธุรกรรมที่เครื่องชำระเงิน NFC และเข้าถึงเที่ยวบินและบัตรอื่นๆ ได้อย่างรวดเร็ว สำหรับกิจกรรมที่กำลังจะเกิดขึ้น

ใน Android 12 ขึ้นไป Wallet การเข้าถึงด่วน พร้อมใช้งานจากเฉดสีดังที่แสดงในรูปที่ 1 และรูปที่ 2

วันที่ ฟีเจอร์ Wallet สำหรับการเข้าถึงด่วนในหน้าต่าง
รูปที่ 1 ฟีเจอร์ Wallet สำหรับการเข้าถึงด่วน (อุปกรณ์ล็อกอยู่)
วันที่ ฟีเจอร์ Wallet สำหรับการเข้าถึงด่วนในหน้าต่าง
รูปที่ 2 ฟีเจอร์ Wallet สำหรับการเข้าถึงด่วน (ปลดล็อกอุปกรณ์แล้ว)

ใน Android 11 ฟีเจอร์นี้ใช้ได้จากเมนูเปิด/ปิดดังที่แสดงใน รูปที่ 3

วันที่ ฟีเจอร์ Wallet สำหรับการเข้าถึงด่วนในเมนูเปิด/ปิด
รูปที่ 3 ฟีเจอร์การเข้าถึงด่วนใน Wallet เมนู

ข้อกำหนด

อุปกรณ์ของคุณต้องมี NFC เพื่อใช้ฟีเจอร์ Wallet สำหรับการเข้าถึงด่วน ฟีเจอร์ เชื่อมโยงกับ QuickAccessWalletService ของแอปการชำระเงิน NFC เริ่มต้น ซึ่งหมายความว่า อุปกรณ์ต้องรองรับ NFC ด้วย การจำลองการ์ดแบบโฮสต์ (HCE)

ภาพรวมของฟีเจอร์

Wallet การเข้าถึงด่วนจะแบ่งออกเป็น 2 ส่วน ได้แก่ UI สำหรับการเข้าถึงด่วน Wallet และ ผู้ให้บริการบัตร Wallet แบบเข้าถึงด่วน

ใน Android 12 ขึ้นไป UI ของ Wallet จะทำงานในระบบ UI และอยู่ใน frameworks/base/packages/SystemUI/src/com/android/systemui/wallet ใน Android 11, UI ของ Wallet ซึ่งอยู่ที่ platform/packages/apps/QuickAccessWallet ต้องติดตั้งและอยู่ในรายการที่อนุญาตพิเศษ

ผู้ให้บริการบัตร Wallet แบบ Quick Access เป็นแอปชำระเงิน NFC เริ่มต้น ผู้ใช้สามารถ ติดตั้งแอปการชำระเงิน NFC หลายรายการพร้อมกัน แต่ติดตั้งเฉพาะค่าเริ่มต้น แอปการชำระเงิน NFC จะแสดงบัตรในเมนูเปิด/ปิด คุณสามารถระบุ NFC ได้ มีการตั้งค่าแอปการชำระเงินเป็นค่าเริ่มต้นในตอนแรก แต่ผู้ใช้สามารถเลือก ในการตั้งค่า หากติดตั้งแอปการชำระเงิน NFC ไว้เพียงแอปเดียว แอปนั้นจะกลายเป็น ใช้ค่าเริ่มต้นโดยอัตโนมัติ (โปรดดู CardEmulationManager)

การใช้งาน

หากต้องการระบุบัตรใน UI ของ Wallet การเข้าถึงด่วน การชำระเงินด้วย NFC แอปพลิเคชันต้องใช้ QuickAccessWalletService แอปการชำระเงินต้องมีรายการไฟล์ Manifest ที่โฆษณาบริการ

เพื่อให้มั่นใจว่ามีเพียง UI ของระบบเท่านั้นที่สามารถเชื่อมโยงกับ QuickAccessWalletService ได้ แอปการชำระเงิน NFC ต้องใช้ สิทธิ์android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE กำหนดให้ดำเนินการ สิทธิ์ดังกล่าวช่วยให้มั่นใจได้ว่า มีเพียง UI ของระบบเท่านั้นที่สามารถเชื่อมโยงกับ QuickAccessWalletService

<service
     android:name=".MyQuickAccessWalletService"
     android:label="@string/my_default_tile_label"
     android:icon="@drawable/my_default_icon_label"
     android:logo="@drawable/my_wallet_logo"
     android:permission="android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE">
     <intent-filter>
         <action android:name="android.service.quickaccesswallet.QuickAccessWalletService" />
         <category android:name="android.intent.category.DEFAULT"/>
     </intent-filter>
     <meta-data android:name="android.quickaccesswallet"
          android:resource="@xml/quickaccesswallet_configuration" />
     <meta-data
          android:name="android.quickaccesswallet.tile"
          android:resource="@drawable/my_default_tile_icon"/>
</service>

ข้อมูลเพิ่มเติมเกี่ยวกับ Wallet จะรวมอยู่ในไฟล์ XML ที่ลิงก์ ดังนี้

<quickaccesswallet-service
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:settingsActivity="com.example.android.SettingsActivity"
   android:shortcutLongLabel="@string/my_wallet_empty_state_text"
   android:shortcutShortLabel="@string/my_wallet_button_text"
   android:targetActivity="com.example.android.WalletActivity"/>

ถัดไป แอปการชำระเงินต้องใช้ QuickAccessWalletService ดังนี้

public class MyQuickAccessWalletService extends QuickAccessWalletService {

    @Override
    public void onWalletCardsRequested(
            GetWalletCardsRequest request,
            GetWalletCardsCallback callback) {
        GetWalletCardsResponse response = // generate response
        callback.onSuccess(response);
    }

    @Override
    public void onWalletCardSelected(SelectWalletCardRequest request) {
        // selecting a card should ensure that it is used when making an NFC payment
    }

    @Override
    public void onWalletDismissed() {
        // May un-select card if the wallet app has the concept of a 'default'
        // payment method
    }
}

หาก HostApduService เริ่มจัดการธุรกรรม NFC ซึ่งด้วยเหตุนี้ เริ่มกิจกรรมเพื่อแสดงความคืบหน้าและผลลัพธ์ของการชำระเงิน พยายามขอการอ้างอิงไปยัง QuickAccessWalletService ที่เชื่อมโยงและการเรียก QuickAccessWalletService#sendEventที่มีประเภทเหตุการณ์เป็น TYPE_NFC_PAYMENT_STARTED ซึ่งจะทําให้ UI ของ Wallet ของการเข้าถึงด่วน ปิด ซึ่งทำให้ผู้ใช้มองเห็นกิจกรรมการชำระเงินได้อย่างชัดเจน

ดูเอกสารเพิ่มเติมเกี่ยวกับการใช้ QuickAccessWalletService ได้ที่ QuickAccessWalletService และ TestQuickAccessWalletService การทดสอบ CTS

เปิดใช้ UI กระเป๋าเงินการเข้าถึงด่วนใน Android 11

หากต้องการกำหนดค่า Wallet สำหรับการเข้าถึงด่วนให้พร้อมใช้งานจากเมนูเปิด/ปิด ใน Android 11 ให้ใส่ QuickAccessWallet เป้าหมายในบิลด์และเปิดใช้ปลั๊กอิน globalactions.wallet โดยการเพิ่ม ในบรรทัดตัวหนาในตัวอย่างโค้ดด้านล่างไปยัง overlay/frameworks/base/packages/SystemUI/res/values/config.xml ไฟล์

&#x3C;resources>
    ...
    &#x3C;!-- SystemUI Plugins that can be loaded on user builds. -->
    &#x3C;string-array name="config_pluginWhitelist" translatable="false">
        &#x3C;item>com.android.systemui</item>
        &#x3C;item>com.android.systemui.plugin.globalactions.wallet</item>
    &#x3C;/string-array>
&#x3C;/resources>

ระบุแอปการชำระเงิน NFC เริ่มต้นใน ไฟล์การกำหนดค่าการตั้งค่า โดยใช้ def_nfc_payment_component

แอปการชำระเงิน NFC เริ่มต้นต้องแสดง QuickAccessWalletService เพื่อส่งบัตรไปยัง Wallet สำหรับการเข้าถึงด่วน หากแอปการชำระเงิน NFC เริ่มต้น ไม่ส่งออกบริการนี้ ระบบจะซ่อน UI ของ Wallet

รายละเอียดการใช้งาน QuickAccessWalletService

QuickAccessWalletService มีวิธีการเชิงนามธรรม 3 วิธีที่ต้องติดตั้งใช้งาน ได้แก่ onWalletCardsRequested, onWalletCardSelected และ onWalletDismissed แผนภาพลำดับด้านล่างแสดงลำดับการโทรเมื่อกระเป๋าเงินการเข้าถึงด่วน แสดงทันทีก่อนการชำระเงิน NFC

แผนภาพลำดับของ Wallet สำหรับการเข้าถึงด่วน

วันที่ ตัวอย่างลำดับการโทรเมื่อมีการดู Wallet สำหรับการเข้าถึงด่วน
รูปที่ 4 ตัวอย่างลำดับการโทรเมื่อ Wallet สำหรับการเข้าถึงด่วนคือ ดูแล้ว

บางมุมมองของ Quick Access Wallet อาจไม่ได้มีการชำระเงินด้วย NFC แต่ก็ รูปที่ 4 ด้านบนแสดงความสามารถทั้งหมดของ QuickAccessWalletService ในตัวอย่างนี้ บัตร Quick Access Wallet นำองค์ประกอบที่กำหนดเป็นสีน้ำเงินไปใช้ มีสมมติฐานว่าการชำระเงิน บัตรจะถูกเก็บไว้บนอุปกรณ์ในฐานข้อมูล และ อินเทอร์เฟซชื่อ PaymentCardManager มีสันนิษฐานว่ากิจกรรม ที่ชื่อ PaymentActivity จะแสดงผลการชำระเงินด้วย NFC โฟลว์ จะดำเนินการดังนี้

  1. ผู้ใช้ทำท่าทางสัมผัสเพื่อเปิด Wallet สำหรับการเข้าถึงด่วน
  2. UI กระเป๋าเงินการเข้าถึงด่วน (ส่วนหนึ่งของ UI ระบบ) จะตรวจสอบแพ็กเกจ เพื่อดูว่าแอปการชำระเงิน NFC เริ่มต้นมีการส่งออกไหม QuickAccessWalletService

    • หากไม่ได้ส่งออกบริการ ระบบจะไม่กระเป๋าเงินการเข้าถึงด่วน แสดงอยู่
  3. UI ของ Wallet สำหรับการเข้าถึงด่วนจะเชื่อมโยงกับ QuickAccessWalletService และ โทรหา onWalletCardsRequested เมธอดนี้ใช้ออบเจ็กต์คำขอ มีข้อมูลเกี่ยวกับจำนวนและขนาดของการ์ดที่แสดงได้ และ Callback สามารถเรียก Callback จากชุดข้อความที่อยู่เบื้องหลังได้

  4. QuickAccessWalletService จะคำนวณการ์ดที่ต้องการแสดง จากนั้นเรียกเมธอด onSuccess ใน Callback ที่ระบุ ตอนนี้ จึงขอแนะนำให้บริการดำเนินการเหล่านี้กับเทรดในเบื้องหลัง

  5. UI ของระบบจะแจ้งเตือนทันทีที่การ์ดปรากฏขึ้น QuickAccessWalletService ว่าได้เลือกบัตรใบแรกโดยการโทร onWalletCardSelected

    • ระบบจะเรียกใช้ onWalletCardSelected ทุกครั้งที่ผู้ใช้เลือก บัตรใหม่
    • อาจมีการเรียก onWalletCardSelected แม้ว่าปัจจุบัน บัตรที่เลือกไม่ได้เปลี่ยนแปลง
  6. เมื่อผู้ใช้ปิด Wallet สำหรับการเข้าถึงด่วน UI ของระบบจะแจ้ง QuickAccessWalletService โดยโทรไปที่ onWalletDismissed

ในตัวอย่างข้างต้น ผู้ใช้นำโทรศัพท์มาไว้ในระยะการชำระเงิน NFC เครื่องชำระเงินขณะที่ระบบแสดงกระเป๋าสตางค์ องค์ประกอบหลักของการจัดการ NFC การชำระเงินมีค่าเป็น HostApduService ซึ่งต้องนำไปใช้เพื่อประมวลผล APDU ที่ได้รับจากโปรแกรมอ่าน NFC (ดูข้อมูลเพิ่มเติมได้ที่ การจำลองการ์ดแบบโฮสต์) โดยจะถือว่าแอปการชำระเงินเริ่มกิจกรรมเพื่อแสดงความคืบหน้าและ ของการโต้ตอบกับเครื่องชำระเงิน NFC อย่างไรก็ตาม การเข้าถึงด่วน ไอคอน Wallet แสดงอยู่ที่ด้านบนของหน้าต่างแอป ซึ่งหมายความว่า กิจกรรมการชำระเงินถูกบดบังโดย UI กระเป๋าเงินการเข้าถึงด่วน เพื่อแก้ไขปัญหานี้ แอปต้องแจ้ง UI ของระบบว่า UI กระเป๋าเงินการเข้าถึงด่วนควร ปิดแล้ว ซึ่งทำได้โดยการอ้างอิงถึงขอบเขต QuickAccessWalletService และโทรหา sendWalletServiceEvent พร้อมเหตุการณ์ ประเภท TYPE_NFC_PAYMENT_STARTED

การใช้งานตัวอย่าง QuickAccessWalletService

/** Sample implementation of {@link QuickAccessWalletService} */
@RequiresApi(VERSION_CODES.R)
public class MyQuickAccessWalletService extends QuickAccessWalletService {

  private static final String TAG = "QAWalletSvc";
  private ExecutorService executor;
  private PaymentCardManager paymentCardManager;

  @Override
  public void onCreate() {
    super.onCreate();
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
      Log.w(TAG, "Should not run on pre-R devices");
      stopSelf();
      return;
    }
    executor = Executors.newSingleThreadExecutor();
    paymentCardManager = new PaymentCardManager();
  }

  @Override
  public void onDestroy() {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
      return;
    }
    executor.shutdownNow();
  }

  @Override
  public void onWalletCardsRequested(
      @NonNull GetWalletCardsRequest request, @NonNull GetWalletCardsCallback callback) {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
      return;
    }
    executor.submit(
        () -> {
          List<PaymentCard> paymentCards = paymentCardManager.getCards();
          int maxCards = Math.min(paymentCards.size(), request.getMaxCards());
          List<WalletCard> walletCards = new ArrayList<>(maxCards);
          int selectedIndex = 0;
          int cardWidthPx = request.getCardWidthPx();
          int cardHeightPx = request.getCardHeightPx();
          for (int index = 0; index < maxCards; index++) {
            PaymentCard paymentCard = paymentCards.get(index);
            WalletCard walletCard =
                new WalletCard.Builder(
                        paymentCard.getCardId(),
                        paymentCard.getCardImage(cardWidthPx, cardHeightPx),
                        paymentCard.getContentDescription(),
                        paymentCard.getPendingIntent())
                    .build();
            walletCards.add(walletCard);
            if (paymentCard.isSelected()) {
              selectedIndex = index;
            }
          }
          GetWalletCardsResponse response =
              new GetWalletCardsResponse(walletCards, selectedIndex);
          callback.onSuccess(response);
        });
  }

  @Override
  public void onWalletCardSelected(@NonNull SelectWalletCardRequest request) {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
      return;
    }
    executor.submit(
        () -> paymentCardManager.selectCardById(request.getCardId()));
  }

  @Override
  public void onWalletDismissed() {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
      return;
    }
    executor.submit(() -> {
      paymentCardManager.removeCardOverrides();
    });
  }
}

ดูรายละเอียดเพิ่มเติมเกี่ยวกับ QuickAccessWalletService ได้ที่ การอ้างอิง API QuickAccessWalletService

สิทธิ์

รายการไฟล์ Manifest สำหรับ QuickAccessWalletService ต้องมีแอตทริบิวต์ มีการใช้สิทธิ์ android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE ใน Android 11 นี่คือสิทธิ์ระดับลายเซ็นที่ระงับไว้ UI ระบบ ซึ่งหมายความว่า เฉพาะกระบวนการ UI ของระบบเท่านั้นที่สามารถเชื่อมโยงกับการใช้งาน QuickAccessWalletService โปรดทราบว่าแอปที่โหลดจากแหล่งที่ไม่รู้จักสามารถอ้างสิทธิ์ได้ ได้รับสิทธิ์และเข้าถึงข้อมูล QuickAccessWalletService ในอุปกรณ์ได้อย่างเต็มรูปแบบ ที่ใช้ Android 10 หรือต่ำกว่า เพื่อป้องกันปัญหานี้ ขอแนะนำให้ใช้บริการ ตรวจสอบเวอร์ชันของบิลด์ใน onCreate และเปิดใช้บริการนี้ในอุปกรณ์เท่านั้น ที่ใช้ Android 11 ขึ้นไป ไม่มีสิทธิ์อื่นๆ ของแอป จำเป็นสำหรับบริการชำระเงินจำลองบัตรโฮสต์ บริการต่างๆ

หากแอปการชำระเงิน NFC เริ่มต้นไม่มีการใช้งานหรือส่งออกไม่ได้ QuickAccessWalletService ระบบจะไม่แสดง UI ของ Wallet สำหรับการเข้าถึงด่วน

การตั้งค่าใน Android 12

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

สลับเพื่อเปิดหรือปิดใช้ Wallet จากหน้าจอล็อก

รูปที่ 5 แสดงปุ่มสลับ Wallet ในหน้าหน้าจอล็อกในการตั้งค่า

การตั้งค่าใน Android 11

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

วันที่ หน้าการตั้งค่าเพื่อเปิดหรือปิดใช้ฟีเจอร์ Wallet สำหรับการเข้าถึงด่วน
รูปที่ 6 หน้าการตั้งค่าเพื่อเปิดใช้หรือปิดใช้ ฟีเจอร์ Wallet สำหรับการเข้าถึงด่วน

การปรับแต่ง

เพิ่มมุมมอง Wallet สำหรับการเข้าถึงด่วนไปยังตำแหน่งอื่นใน UI ของระบบ

UI ของ Wallet สำหรับการเข้าถึงด่วน สร้างขึ้นเป็น ปลั๊กอินระบบ แม้ว่าการติดตั้งใช้งาน AOSP จะใช้ GlobalActionsDialog (แสดงเมื่อกดปุ่มเปิด/ปิดค้างไว้) คุณสามารถย้ายฟีเจอร์ไปไว้หลังท่าทางสัมผัสอื่นๆ ได้ ตราบใดที่คุณยังคงสัญญาที่ระบุโดยอินเทอร์เฟซของปลั๊กอิน

public interface GlobalActionsPanelPlugin extends Plugin {

  /** Invoked when the view is shown */
  PanelViewController onPanelShown(Callbacks callbacks, boolean deviceLocked);

  /** Callbacks for interacting with the view container */
  interface Callbacks {
    /** Dismisses the view */
    void dismissGlobalActionsMenu();

    /** Starts a PendingIntent, dismissing the keyguard if necessary. */
    void startPendingIntentDismissingKeyguard(PendingIntent pendingIntent);
  }

  /** Provides the Quick Access Wallet view */
  interface PanelViewController {

    /** Returns the QuickAccessWallet view, which may take any size */
    View getPanelContent();

    /** Invoked when the view is dismissed */
    void onDismissed();

    /** Invoked when the device is either locked or unlocked. */
    void onDeviceLockStateChanged(boolean locked);
  }
}

UI ของ Wallet สำหรับการเข้าถึงด่วน ติดตั้งใช้งาน GlobalActionsPanelPlugin และ PanelViewController GlobalActionsDialog รับอินสแตนซ์ของปลั๊กอิน Wallet โดยใช้ com.android.systemui.Dependency:

GlobalActionsPanelPlugin mPanelPlugin =
    Dependency.get(ExtensionController.class)
        .newExtension(GlobalActionsPanelPlugin.class)
        .withPlugin(GlobalActionsPanelPlugin.class)
        .build()
        .get();

หลังจากตรวจสอบว่าปลั๊กอินไม่เป็นค่าว่างและ PanelViewController onPanelShown แสดงผลเป็นค่าว่าง กล่องโต้ตอบจะแนบ View ที่ระบุ โดย getPanelContent ไปยัง View ของตนเอง และให้ Callback ที่เหมาะสมสำหรับ เหตุการณ์ของระบบ

// Construct a Wallet PanelViewController.
// `this` implements GlobalActionsPanelPlugin.Callbacks
GlobalActionsPanelPlugin.PanelViewController mPanelController =
    mPanelPlugin.onPanelShown(this, !mKeyguardStateController.isUnlocked());

// Attach the view
FrameLayout panelContainer = findViewById(R.id.my_panel_container);
FrameLayout.LayoutParams panelParams =
    new FrameLayout.LayoutParams(
        FrameLayout.LayoutParams.MATCH_PARENT,
        FrameLayout.LayoutParams.MATCH_PARENT);
panelContainer.addView(mPanelController.getPanelContent(), panelParams);

// Respond to unlock events (if the view can be accessed while the phone is locked)
keyguardStateController.addCallback(new KeyguardStateController.Callback() {
  @Override
  public void onUnlockedChanged() {
    boolean unlocked = keyguardStateController.isUnlocked()
        || keyguardStateController.canDismissLockScreen();
    mPanelController.onDeviceLockStateChanged(unlocked);
  }
});

// Implement GlobalActionsPanelPlugin.Callbacks
@Override
public void dismissGlobalActionsMenu() {
  dismissDialog();
}
@Override
public void startPendingIntentDismissingKeyguard(PendingIntent pendingIntent) {
  mActivityStarter.startPendingIntentDismissingKeyguard(pendingIntent);
}

// Notify the wallet when the container view is dismissed
mPanelController.onDismissed();

หากต้องการนำ Wallet การเข้าถึงด่วนออกจากเมนูเปิด/ปิด อย่าใส่ เป้าหมาย QuickAccessWallet จากบิลด์ของระบบ วิธีนำการเข้าถึงด่วนออก Wallet จากเมนูเปิด/ปิด แต่เพิ่มลงในมุมมองอื่นจาก UI ของระบบ รวมเป้าหมายของบิลด์และนำการอ้างอิง GlobalActionsPanelPlugin ออก จาก GlobalActionsImpl

ตั้งการกำหนดค่าเริ่มต้น

Android 12

ใน Android 12 ขึ้นไป Wallet สำหรับการเข้าถึงด่วนคือ ที่มองเห็นได้ในหน้าต่างการตั้งค่าด่วน ระดับการเข้าถึงการเข้าถึงด่วน Wallet ในหน้าจอล็อกจะได้รับการปกป้องด้วยการตั้งค่าความปลอดภัยต่อไปนี้ LOCKSCREEN_SHOW_WALLET การตั้งค่านี้ควบคุมว่า Wallet สำหรับการเข้าถึงด่วน จะปรากฏที่ด้านล่างขวาของหน้าจอล็อก การตั้งค่านี้ตั้งไว้เป็น true โดยค่าเริ่มต้น แต่ผู้ใช้สามารถปิดได้ในการตั้งค่า > ดิสเพลย์ > หน้าจอล็อก > แสดง Wallet

Android 11

ใน Android 11 ระดับการเข้าถึง Wallet แบบ Quick Access จะถูกจำกัดด้วยการตั้งค่าความปลอดภัย 2 แบบดังนี้ GLOBAL_ACTIONS_PANEL_ENABLED และ GLOBAL_ACTIONS_PANEL_AVAILABLE การตั้งค่าของ AVAILABLE จะควบคุมการเปิดและปิดฟีเจอร์ใน การตั้งค่า การตั้งค่านี้ตั้งไว้เป็นtrueโดย WalletPluginService หาก QuickAccessWallet ไม่ได้รวมอยู่ในบิลด์ การตั้งค่าจะยังคงอยู่ false การตั้งค่า ENABLED จะตั้งค่าเป็น true โดยค่าเริ่มต้นในตำแหน่งเดียวกัน แต่ผู้ใช้สามารถปิดได้ในการตั้งค่า หากต้องการเปลี่ยนลักษณะการทำงานเริ่มต้น แก้ไข WalletPluginService#enableFeatureInSettings

การตรวจสอบความถูกต้อง

หากต้องการตรวจสอบการใช้งาน Quick Access Wallet ให้เรียกใช้ CTS และคู่มือ การทดสอบ การเปลี่ยนแปลงปลั๊กอินควรใช้ การทดสอบแบบ Robolectric

การทดสอบ CTS

ทำการทดสอบ CTS ที่ cts/tests/quickaccesswallet

การทดสอบด้วยตนเองสำหรับ Android 12

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

ความพร้อมใช้งาน

  • หากแอปการชำระเงิน NFC เริ่มต้นไม่รองรับฟีเจอร์นี้ ไอคอน "Quick" เข้าถึง Wallet ไม่ได้ทั้งในการตั้งค่าด่วนและบนล็อก บนหน้าจอ
  • หากแอปการชำระเงิน NFC เริ่มต้นรองรับฟีเจอร์นี้ การเข้าถึงด่วน Wallet สามารถเข้าถึงได้ในหน้าต่างการตั้งค่าด่วน
  • หากแอปการชำระเงิน NFC เริ่มต้นรองรับฟีเจอร์นี้ และหาก การตั้งค่า LOCKSCREEN_SHOW_WALLET คือ true ส่วน Wallet สำหรับการเข้าถึงด่วนคือ เข้าถึงได้บนหน้าจอล็อก
  • หากแอปการชำระเงิน NFC เริ่มต้นรองรับฟีเจอร์นี้ และหาก การตั้งค่า LOCKSCREEN_SHOW_WALLET คือ false ไม่สามารถใช้ Wallet สำหรับการเข้าถึงด่วน เข้าถึงได้บนหน้าจอล็อก

สถานะศูนย์

  • หากเปิดใช้และส่งออก QuickAccessWalletService แต่ไม่ได้เปิดใช้ ให้การ์ด การ์ดเฉดสีจะปรากฏขึ้นตามที่แสดงใน ตัวอย่างในรูปที่ 7 การคลิกการ์ดจะเป็นการเปิดแอปการชำระเงิน NFC เริ่มต้น

    ชิ้นส่วนตัวอย่างในหน้าต่างที่แสดงแอปการชำระเงิน NFC เริ่มต้น

    รูปที่ 7 ชิ้นส่วนตัวอย่างในหน้าต่างที่แสดงแอปการชำระเงิน NFC เริ่มต้น

  • การคลิกมุมมองสถานะว่างเปล่าดังที่แสดงในรูปที่ 8 จะเปิด แอปการชำระเงิน NFC เริ่มต้น มุมมองสถานะว่างเปล่านี้จะปรากฏต่อเมื่อ ผู้ใช้มีบัตรเหลืออยู่ใน Wallet 1 ใบ ให้นำบัตรออกจากรายละเอียดบัตร แล้วกลับไปที่มุมมอง Wallet

  • หน้าจอล็อกจะแสดงไอคอนกระเป๋าสตางค์

มุมมองสถานะว่างเปล่าใน Wallet การเข้าถึงด่วน

รูปที่ 8 มุมมองสถานะว่างเปล่าใน UI กระเป๋าเงินการเข้าถึงด่วน

สถานะที่ไม่เป็น 0

  • หากแอป Wallet มีบัตรอย่างน้อย 1 ใบ การ์ดจะอยู่ในเงา ปรากฏตามที่แสดงในรูปที่ 9

    การ์ดตัวอย่างในหน้าต่างเมื่อแอป Wallet มีบัตรอย่างน้อย 1 ใบ

    รูปที่ 9 การ์ดตัวอย่างในหน้าต่างเมื่อแอป Wallet มีบัตรอย่างน้อย 1 ใบ

  • การคลิกการ์ดจะแสดงภาพสไลด์การ์ด

  • หน้าจอล็อกจะแสดงปุ่มที่เปิด Wallet สำหรับการเข้าถึงด่วน

    UI กระเป๋าเงินออนไลน์สำหรับการเข้าถึงด่วนที่มีการ์ดแสดงอยู่

    รูปที่ 10 UI กระเป๋าเงินออนไลน์สำหรับการเข้าถึงด่วนที่มีการ์ดแสดงอยู่

  • หากบัตรที่แสดงแทนวิธีการชำระเงิน NFC ให้ถือ โทรศัพท์ไปยังเครื่องชำระเงิน NFC จะส่งผลให้มีการใช้วิธีการชำระเงินนั้น และมุมมอง Wallet จะปิดไป

  • การคลิกการ์ดที่แสดงจะเปิดกิจกรรมโดยละเอียดของการ์ดนั้น

  • หาก QuickAccessWalletService มาจากบัตรหลายใบ ผู้ใช้ สามารถปัดดูการ์ดต่างๆ ได้

  • เมนูรายการเพิ่มเติมมี 1 รายการ ได้แก่ เปิดการตั้งค่าหน้าจอล็อก ว่าผู้ใช้สามารถเปลี่ยนตัวเลือกแสดง Wallet ได้

การทดสอบสถานะล็อก

  • หากโทรศัพท์ล็อกอยู่ คุณจะเห็นกระเป๋าเงินในการตั้งค่าด่วน เงาพร้อมคำอธิบายว่าเพิ่มบัตรหากไม่มีบัตรโดยค่าเริ่มต้น แอปการชำระเงิน หรือปลดล็อกเพื่อใช้ หากมีบัตรอยู่ในแอปการชำระเงินเริ่มต้น
  • หากโทรศัพท์ล็อกอยู่ ระดับการเข้าถึง Wallet ในหน้าจอล็อกจะเกิดขึ้น ควบคุมโดยการตั้งค่า Secure.LOCKSCREEN_SHOW_WALLET ซึ่ง ควบคุมได้ในการตั้งค่า
  • หากโทรศัพท์ล็อกอยู่ LOCKSCREEN_SHOW_WALLET จะมีสถานะfalse และไม่มีบัตร มีอยู่ในแอปการชำระเงิน NFC เริ่มต้น กระเป๋าเงินจะไม่แสดงใน ล็อกหน้าจอ
  • หากโทรศัพท์ล็อกอยู่ LOCKSCREEN_SHOW_WALLET จะมีสถานะtrue และไม่มีบัตร มีอยู่ในแอปการชำระเงิน NFC เริ่มต้น กระเป๋าเงินจะไม่แสดงใน ล็อกหน้าจอ
  • หากโทรศัพท์ล็อกอยู่ LOCKSCREEN_SHOW_WALLET จะtrue และการ์ด มีอยู่ในแอปการชำระเงิน NFC เริ่มต้น กระเป๋าเงินจะแสดงบนล็อก บนหน้าจอ
  • กำลังปลดล็อกโทรศัพท์ขณะที่กระเป๋าสตางค์แสดงบนล็อก ส่งผลให้มีการค้นหาการ์ดอีกครั้ง ซึ่งอาจส่งผลให้ เนื้อหาการ์ดที่แตกต่างกัน

การทดสอบการช่วยเหลือพิเศษ

  • ผู้ใช้ TalkBack สามารถไปยังส่วนต่างๆ ในมุมมองของ Wallet ได้โดยการปัดไปทางซ้ายและขวา และโดยการฟังคำอธิบาย เนื้อหาของการ์ด
  • การปัดไปทางซ้ายและขวาโดยเปิดใช้ TalkBack จะเป็นการเลือกการ์ดแต่ละใบตามลำดับ ผู้ใช้ TalkBack สามารถเลือกและใช้วิธีการชำระเงินด้วย NFC เพื่อชำระเงิน NFC เครื่องปลายทาง

การทดสอบด้วยตนเองสำหรับ Android 11

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

ความพร้อมใช้งาน

  • หากการตั้งค่า GLOBAL_ACTIONS_PANEL_ENABLED เป็น true และค่าเริ่มต้น แอปการชำระเงิน NFC รองรับฟีเจอร์นี้ ฟีเจอร์ Quick Access Wallet สามารถเข้าถึงได้
  • หากการตั้งค่า GLOBAL_ACTIONS_PANEL_ENABLED เป็น false และค่าเริ่มต้น แอปการชำระเงิน NFC รองรับฟีเจอร์นี้ แต่ Wallet การเข้าถึงด่วนไม่ได้ สามารถเข้าถึงได้
  • หากการตั้งค่า GLOBAL_ACTIONS_PANEL_ENABLED เป็น true และค่าเริ่มต้น แอปชำระเงิน NFC ไม่รองรับฟีเจอร์ Wallet การเข้าถึงด่วน ไม่สามารถเข้าถึงได้
  • หากการตั้งค่า GLOBAL_ACTIONS_PANEL_ENABLED เป็น false และค่าเริ่มต้น แอปชำระเงิน NFC ไม่รองรับฟีเจอร์ Wallet การเข้าถึงด่วน ไม่สามารถเข้าถึงได้

สถานะศูนย์

  • หากเปิดใช้และส่งออก QuickAccessWalletService แต่ไม่ได้เปิดใช้ ให้บัตรต่างๆ แล้ว UI ของ Wallet สำหรับการเข้าถึงด่วนจะแสดงมุมมองสถานะว่างเปล่า
  • การคลิกมุมมองสถานะว่างเปล่าจะเปิดแอป Wallet ขึ้นมา

    วันที่ มุมมองสถานะว่างเปล่าใน UI กระเป๋าเงินการเข้าถึงด่วน
    รูปที่ 11 มุมมองสถานะว่างเปล่าในการเข้าถึงด่วน UI ของ Wallet

สถานะที่ไม่เป็น 0

  • หากแอป Wallet มีบัตรอย่างน้อย 1 ใบ ระบบจะแสดงบัตร ใน UI ของ Wallet สำหรับการเข้าถึงด่วน

    วันที่ UI กระเป๋าเงินออนไลน์สำหรับการเข้าถึงด่วนที่มีการ์ดแสดงอยู่
    รูปที่ 12 UI กระเป๋าเงินออนไลน์สำหรับการเข้าถึงด่วนที่มีการ์ด แสดงอยู่
  • หากบัตรที่แสดงแทนวิธีการชำระเงิน NFC ให้ถือ โทรศัพท์ไปยังเครื่องชำระเงิน NFC จะส่งผลให้มีการใช้วิธีการชำระเงินนั้น และมุมมอง Wallet จะปิดไป

  • การคลิกการ์ดที่แสดงอยู่จะปิดมุมมอง Wallet และเปิด กิจกรรมของบัตรนั้นอย่างละเอียด

  • หาก QuickAccessWalletService มาจากบัตรหลายใบ ผู้ใช้ สามารถปัดดูการ์ดต่างๆ ได้

  • เมนูรายการเพิ่มเติมมี 2 รายการ รายการแรกที่เปิดแอป Wallet และอีกตัวเลือกหนึ่งที่เปิดการ์ดแสดงการ์ดและ บัตรในการตั้งค่า

การทดสอบสถานะล็อก

  • หากโทรศัพท์ล็อกอยู่ ระดับการเข้าถึง Wallet จะควบคุมโดย Settings.Secure.POWER_MENU_LOCK_SHOW_CONTENT ได้ ควบคุมได้ในการตั้งค่า
  • หากโทรศัพท์ล็อกอยู่และ POWER_MENU_LOCK_SHOW_CONTENT มีสถานะfalse Wallet จะไม่ปรากฏ
  • หากโทรศัพท์ล็อกอยู่และ POWER_MENU_LOCK_SHOW_CONTENT มีสถานะtrue Wallet จะปรากฏขึ้น
  • กำลังปลดล็อกโทรศัพท์ขณะที่กระเป๋าสตางค์แสดงบนล็อก ส่งผลให้มีการค้นหาการ์ดอีกครั้ง ซึ่งอาจส่งผลให้ เนื้อหาการ์ดที่แตกต่างกัน

การทดสอบการช่วยเหลือพิเศษ

  • ผู้ใช้ TalkBack สามารถไปยังส่วนต่างๆ ในมุมมองกระเป๋าเงินได้โดยการปัดไปทางซ้ายและขวา และโดยการฟังคำอธิบาย เนื้อหาของการ์ด
  • การปัดไปทางซ้ายและขวาโดยเปิดใช้ TalkBack จะเป็นการเลือกการ์ดแต่ละใบตามลำดับ ผู้ใช้ TalkBack สามารถเลือกและใช้วิธีการชำระเงินด้วย NFC เพื่อชำระเงิน NFC เครื่องปลายทาง