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

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

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

คุณสมบัติ Quick Access Wallet ในที่ร่ม
คุณลักษณะ Wallet รูปที่ 1 การเข้าถึงด่วน (อุปกรณ์ล็อค)
คุณสมบัติ Quick Access Wallet ในที่ร่ม
รูปที่ 2 การเข้าถึงอย่างรวดเร็วคุณสมบัติ Wallet (อุปกรณ์ปลดล็อค)

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

ฟีเจอร์ Quick Access Wallet ในเมนูพาวเวอร์
คุณลักษณะ Wallet รูปที่ 3 การเข้าถึงด่วนในเมนูพลังงาน

ความต้องการ

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

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

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

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

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

การดำเนินการ

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

เพื่อให้แน่ใจว่าระบบ UI สามารถผูกกับ QuickAccessWalletService , app ชำระเงิน 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>

ข้อมูลเพิ่มเติมเกี่ยวกับกระเป๋าเงินจะรวมอยู่ในไฟล์ 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 เริ่มที่จะจัดการกับการทำธุรกรรมเงื่อนงำและเป็นผลให้เริ่มต้นกิจกรรมเพื่อแสดงความคืบหน้าและผลของการชำระเงินก็ควรพยายามที่จะได้รับการอ้างอิงไปยังผูกพัน QuickAccessWalletService และเรียก QuickAccessWalletService#sendEvent กับประเภทของเหตุการณ์ของ TYPE_NFC_PAYMENT_STARTED . ซึ่งทำให้ UI ของ Quick Access Wallet ถูกปิด ซึ่งทำให้ผู้ใช้มองเห็นกิจกรรมการชำระเงินได้โดยไม่มีสิ่งกีดขวาง

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

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

การกำหนดค่าการเข้าถึงด่วน Wallet จะสามารถใช้ได้จากเมนูอำนาจใน Android 11 รวม QuickAccessWallet เป้าหมายในการสร้างและเปิดใช้งาน globalactions.wallet ปลั๊กอินโดยการเพิ่มเส้นเป็นตัวหนาในตัวอย่างโค้ดด้านล่างไป 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

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

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

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

ไดอะแกรมลำดับ Quick Access Wallet

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

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

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

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

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

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

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

ในตัวอย่างข้างต้น ผู้ใช้นำโทรศัพท์เข้าสู่ช่วงของเทอร์มินัลการชำระเงิน NFC ในขณะที่กระเป๋าเงินกำลังแสดงอยู่ องค์ประกอบสำคัญของการจัดการการชำระเงินเงื่อนงำ HostApduService ซึ่งจะต้องดำเนินการเพื่อ APDUs กระบวนการให้บริการโดยผู้อ่าน 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

สิทธิ์

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

หากแอปการชำระเงิน NFC เริ่มต้นไม่ใช้หรือส่งออก QuickAccessWalletService , กระเป๋าสตางค์ UI ด่วนจะไม่ปรากฏ

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

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

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

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

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

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

หน้าการตั้งค่าเพื่อเปิดหรือปิดใช้งานคุณลักษณะ Quick Access Wallet
รูปหน้า 6. การตั้งค่าเพื่อเปิดหรือปิดใช้งานคุณลักษณะ Wallet เข้าถึงด่วน

การปรับแต่ง

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

ด่วน 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);
  }
}

ด่วน 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();

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

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

Android 12

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

Android 11

ใน Android 11 มองเห็น 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 ทดสอบอยู่ที่ cts/tests/quickaccesswallet

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

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

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

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

สถานะศูนย์

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

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

    รูปที่ 7 ตัวอย่างกระเบื้องในที่ร่มแสดงแอปพลิเคชำระเงินเริ่มต้นเงื่อนงำ

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

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

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

รูปที่ 8 มุมมองรัฐว่างในการเข้าถึงด่วน Wallet UI

สถานะที่ไม่ใช่ศูนย์

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

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

    รูปที่ 9 ตัวอย่างกระเบื้องในที่ร่มเมื่อ app กระเป๋าสตางค์มีหนึ่งหรือมากกว่าบัตร

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

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

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

    รูปที่ 10 การเข้าถึงด่วน 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

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

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

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

สถานะศูนย์

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

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

สถานะที่ไม่ใช่ศูนย์

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

    Quick Access Wallet UI พร้อมการ์ดที่แสดง
    รูปที่ 12 การเข้าถึงด่วน 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