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

คุณลักษณะ 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 . ซึ่งทำให้ UI ของ Quick Access Wallet ถูกปิด ซึ่งทำให้ผู้ใช้มองเห็นกิจกรรมการชำระเงินได้โดยไม่มีสิ่งกีดขวาง

สำหรับเอกสารเพิ่มเติมเกี่ยวกับการนำ 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

ไดอะแกรมลำดับ Quick Access 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 นั้น System UI จะแจ้ง QuickAccessWalletService โดยการเรียก onWalletDismissed

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

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

ในการเปิดหรือปิดใช้งาน Quick Access Wallet จากหน้าจอล็อก ผู้ใช้สามารถใช้การสลับ Show 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

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

Android 12

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

Android 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 และการทดสอบด้วยตนเอง การเปลี่ยนแปลงปลั๊กอินควรใช้การ ทดสอบหุ่นยนต์ ที่รวมอยู่ด้วย

การทดสอบ CTS

เรียกใช้การทดสอบ 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 จะสามารถเข้าถึงกระเป๋าเงินด่วนได้บนหน้าจอล็อก
  • หากแอปการชำระเงิน 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 เริ่มต้นรองรับคุณลักษณะนี้ คุณจะสามารถเข้าถึงกระเป๋าเงินด่วนเข้าถึงได้
  • หากการตั้งค่า GLOBAL_ACTIONS_PANEL_ENABLED เป็น false และแอปการชำระเงิน NFC เริ่มต้นรองรับคุณลักษณะนี้ คุณจะเข้าถึงกระเป๋าเงินด่วน ไม่ ได้
  • หากการตั้งค่า 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 มีบัตรหลายใบ ผู้ใช้สามารถปัดระหว่างการ์ดได้

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

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

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

การทดสอบการช่วยสำหรับการเข้าถึง

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