กระเป๋าเงินด่วน

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

ใน Android 12 หรือสูงกว่า ฟีเจอร์ Quick Access Wallet จะพร้อมใช้งานตั้งแต่เฉดสีดังแสดงในรูปที่ 1 และรูปที่ 2

คุณสมบัติ Quick Access Wallet ในที่ร่ม
รูปที่ 1 คุณสมบัติ Quick Access Wallet (อุปกรณ์ล็อค)
คุณสมบัติ Quick Access Wallet ในที่ร่ม
รูปที่ 2 คุณสมบัติ Quick Access Wallet (ปลดล็อคอุปกรณ์แล้ว)

ใน Android 11 คุณสมบัตินี้จะใช้งานได้จากเมนูพลังงานดังแสดงในรูปที่ 3

คุณสมบัติ Quick Access Wallet ในเมนูเปิดปิด
รูปที่ 3 คุณสมบัติ Quick Access Wallet ในเมนูเปิดปิด

ความต้องการ

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

ภาพรวมคุณสมบัติ

Quick Access Wallet มีสองส่วน: Quick Access Wallet UI และผู้ให้บริการบัตร Quick Access Wallet

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

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

การนำไปปฏิบัติ

ในการมอบการ์ดให้กับ Quick Access Wallet UI แอปการชำระเงิน NFC จะต้องใช้ QuickAccessWalletService แอปการชำระเงินต้องมีรายการโฆษณาบริการ

เพื่อให้แน่ใจว่ามีเพียง UI ของระบบเท่านั้นที่สามารถเชื่อมโยงกับ QuickAccessWalletService ได้ แอปการชำระเงิน NFC จะต้องได้รับอนุญาตจาก android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE การต้องการสิทธิ์นี้ช่วยให้แน่ใจว่ามีเพียง System 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>

ข้อมูลเพิ่มเติมเกี่ยวกับกระเป๋าเงินจะรวมอยู่ในไฟล์ 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 . การดำเนินการนี้จะทำให้ Quick Access Wallet UI ถูกปิด ทำให้ผู้ใช้สามารถดูกิจกรรมการชำระเงินได้โดยไม่มีสิ่งกีดขวาง

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

การเปิดใช้งาน Quick Access Wallet UI ใน Android 11

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

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

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

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

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

QuickAccessWalletService มีวิธีการเชิงนามธรรมสามวิธีที่ต้องนำไปใช้: onWalletCardsRequested , onWalletCardSelected และ onWalletDismissed แผนภาพลำดับด้านล่างแสดงลำดับการโทรเมื่อมีการดู Quick Access Wallet ทันทีก่อนการชำระเงิน NFC

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

ตัวอย่างลำดับการโทรเมื่อดู Quick Access Wallet
รูปที่ 4 ตัวอย่างลำดับการโทรเมื่อดู Quick Access Wallet

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

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

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

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

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

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

ในตัวอย่างข้างต้น ผู้ใช้นำโทรศัพท์เข้าสู่ระยะของเครื่องชำระเงิน NFC ในขณะที่กระเป๋าเงินกำลังแสดงอยู่ องค์ประกอบสำคัญในการจัดการการชำระเงิน NFC คือ HostApduService ซึ่งจะต้องนำไปใช้ในการประมวลผล APDU ที่เครื่องอ่าน NFC มอบให้ (สำหรับข้อมูลเพิ่มเติม โปรดดู การจำลองการ์ดตามโฮสต์ ) ถือว่าแอปการชำระเงินเริ่มกิจกรรมเพื่อแสดงความคืบหน้าและผลลัพธ์ของการโต้ตอบกับเครื่องเทอร์มินัล NFC อย่างไรก็ตาม UI กระเป๋าเงินการเข้าถึงด่วนจะแสดงที่ด้านบนของหน้าต่างแอพ ซึ่งหมายความว่ากิจกรรมการชำระเงินจะถูกบดบังโดย UI กระเป๋าเงินด่วน เพื่อแก้ไขปัญหานี้ แอปจะต้องแจ้ง UI ของระบบว่าควรยกเลิก Quick Access Wallet 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 โปรดดูที่ การอ้างอิง QuickAccessWalletService API

สิทธิ์

รายการรายการสำหรับ 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

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

สลับเพื่อเปิดหรือปิดการใช้งานกระเป๋าสตางค์จากหน้าจอล็อค

รูปที่ 5 แสดงการสลับกระเป๋าเงินในหน้าล็อคหน้าจอในการตั้งค่า

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

ผู้ใช้สามารถปิดคุณสมบัติ Quick Access Wallet ได้จากแอพการตั้งค่า หน้าการตั้งค่าอยู่ใน การตั้งค่า > ระบบ > ท่าทาง > การ์ดและบัตรผ่าน

หน้าการตั้งค่าเพื่อเปิดหรือปิดใช้งานคุณสมบัติ Quick Access Wallet
รูปที่ 6 หน้าการตั้งค่าเพื่อเปิดหรือปิดใช้งานคุณสมบัติ Quick Access Wallet

การปรับแต่ง

การเพิ่มมุมมอง Quick Access Wallet ไปยังตำแหน่งอื่นใน System UI

Quick Access Wallet UI สร้างขึ้นเป็น ปลั๊กอินของระบบ แม้ว่าการใช้งาน 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);
  }
}

Quick Access Wallet UI ใช้ GlobalActionsPanelPlugin และ PanelViewController GlobalActionsDialog รับอินสแตนซ์ของปลั๊กอินกระเป๋าสตางค์โดยใช้ com.android.systemui.Dependency :

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

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

// 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();

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

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

แอนดรอยด์ 12

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

แอนดรอยด์ 11

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

การตรวจสอบ

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

การทดสอบซีทีเอส

เรียกใช้การทดสอบ CTS ซึ่งอยู่ที่ cts/tests/quickaccesswallet

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

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

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

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

สถานะเป็นศูนย์

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

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

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

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

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

มุมมองสถานะว่างเปล่าใน Quick Access Wallet

รูปที่ 8 มุม มองสถานะว่างเปล่าใน Quick Access Wallet UI

สถานะที่ไม่เป็นศูนย์

  • หากแอปกระเป๋าเงินให้บัตรตั้งแต่หนึ่งใบขึ้นไป ช่องรายการในที่ร่มจะปรากฏขึ้นดังแสดงในรูปที่ 9

    ตัวอย่างไทล์ในที่ร่มเมื่อแอพ Wallet มีการ์ดตั้งแต่หนึ่งใบขึ้นไป

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

  • การคลิกที่ไทล์จะแสดงการ์ดแบบหมุน

  • หน้าจอล็อคจะแสดงปุ่มสำหรับเปิด Quick Access Wallet

    Quick Access Wallet UI พร้อมการ์ดที่แสดง

    รูปที่ 10 Quick Access Wallet UI พร้อมการ์ดที่แสดง

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

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

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

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

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

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

การทดสอบการเข้าถึง

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

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

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

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

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

สถานะเป็นศูนย์

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

    มุมมองสถานะว่างเปล่าใน Quick Access Wallet UI
    รูปที่ 11 มุม มองสถานะว่างเปล่าใน Quick Access Wallet UI

สถานะที่ไม่เป็นศูนย์

  • หากแอปกระเป๋าเงินให้บัตรตั้งแต่หนึ่งใบขึ้นไป การ์ดเหล่านั้นจะแสดงใน Quick Access Wallet UI

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

  • การคลิกการ์ดที่แสดงจะเป็นการปิดมุมมองกระเป๋าเงินและเปิดกิจกรรมโดยละเอียดสำหรับการ์ดนั้น

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

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

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

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

การทดสอบการเข้าถึง

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