Кошелек быстрого доступа

Функция кошелька быстрого доступа, доступная в Android 11, позволяет пользователю получать доступ к платежным картам и соответствующим пропускам прямо из меню питания. Основные варианты использования включают выбор соответствующего метода оплаты перед выполнением транзакции в терминале NFC и быстрый доступ к рейсам и другим пропускам для предстоящих событий.

В Android 12 и выше функция кошелька быстрого доступа доступна в тени, как показано на рисунках 1 и 2.

Функция кошелька быстрого доступа в тени
Функция Wallet Рисунок 1. Быстрый доступ (устройство заблокировано).
Функция кошелька быстрого доступа в тени
Рисунок 2. быстрого доступа функция бумажника (устройство разблокировано).

В Android 11 эта функция доступна из меню питания, как показано на рисунке 3.

Функция быстрого доступа кошелька в меню питания
Рисунок 3. Быстрый доступ функция Wallet в меню питания.

Требования

Ваше устройство должно иметь NFC для использования функции кошелька быстрого доступа. Комфортный связывается с QuickAccessWalletService платежа приложения по умолчанию NFC, что означает , что устройство должно также поддерживать NFC эмуляцию на основе хоста - карт (HCE) .

Обзор возможностей

Кошелек быстрого доступа состоит из двух частей: пользовательского интерфейса кошелька быстрого доступа и поставщика карты кошелька быстрого доступа.

В Android 12 или выше, прогоны Wallet UI в System UI и находится в frameworks/base/packages/SystemUI/src/com/android/systemui/wallet . В Android 11 Кошелька UI, который находится в platform/packages/apps/QuickAccessWallet , должны быть установлены и в белом списке.

Провайдер карты Quick Access Wallet является платежным приложением NFC по умолчанию. Пользователи могут быть установлены одновременно несколько NFC платежных приложений, но только NFC платежей за приложение по умолчанию может показывать карты в меню питания. Вы можете указать , какие оплаты NFC приложения устанавливаются по умолчанию на начальном этапе, но пользователи могут выбрать другое приложение в настройках. Если только один платеж приложение NFC установлен, он будет использоваться по умолчанию автоматически (см CardEmulationManager ).

Реализация

Для того, чтобы предоставить карты Кошелька интерфейса быстрого доступа, NFC платежные приложения должны реализовывать QuickAccessWalletService . Платежные приложения должны включать запись в манифесте, рекламирующую службу.

Для того, чтобы гарантировать , что только система 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>

Дополнительная информация о кошельке включена в связанный 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 . Это приводит к закрытию пользовательского интерфейса кошелька быстрого доступа, что позволяет пользователю беспрепятственно просматривать платежные операции.

Для получения дополнительной документации по реализации QuickAccessWalletService см QuickAccessWalletService и TestQuickAccessWalletService тест CTS.

Включение пользовательского интерфейса кошелька быстрого доступа в Android 11

Чтобы настроить кошелек быстрого доступа будет доступна из меню питания в 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 .

NFC платежей за приложение по умолчанию должно выставить QuickAccessWalletService предоставить карты Кошелька быстрого доступа. Если приложение для оплаты NFC по умолчанию не экспортирует эту услугу, пользовательский интерфейс кошелька скрыт.

Детали реализации QuickAccessWalletService

QuickAccessWalletService три абстрактных методов , которые должны быть реализованы: onWalletCardsRequested , onWalletCardSelected и onWalletDismissed . На схеме ниже показана последовательность вызовов, когда кошелек быстрого доступа просматривается непосредственно перед платежом NFC.

Схема последовательности операций с кошельком быстрого доступа

Пример последовательности звонков при просмотре кошелька быстрого доступа
Рисунок 4. Пример последовательности вызова , когда кошелек быстрого доступа рассматривается.

Не все виды Кошелька быстрого доступа следует к оплате NFC, но рисунок-выше иллюстрирует все возможности QuickAccessWalletService . В этом примере провайдер карты кошелька быстрого доступа реализует элементы, выделенные синим цветом. Он предположил , что платежные карты хранятся на устройстве в базе данных и доступны через интерфейс с именем PaymentCardManager . Это в дальнейшем предполагается , что деятельность называется PaymentActivity отображает результат оплаты NFC. Поток протекает следующим образом:

  1. Пользователь выполняет жест, чтобы открыть кошелек быстрого доступа.
  2. Wallet UI быстрого доступа (часть системы UI) проверяет менеджер пакетов , чтобы увидеть , если NFC платежей за приложение по умолчанию экспортирует QuickAccessWalletService .

    • Если служба не экспортируется, кошелек быстрого доступа не отображается.
  3. Быстрый доступ связывает Кошелек UI к QuickAccessWalletService и вызовы onWalletCardsRequested . Этот метод принимает объект запроса, содержащий данные о количестве и размере карт, которые могут быть предоставлены, и обратный вызов. Обратный вызов может быть вызван из фонового потока.

  4. QuickAccessWalletService вычисляет карты , которые он хочет показать, а затем вызывает onSuccess метод на функцию обратного вызова. Рекомендуется, чтобы служба выполняла эти действия в фоновом потоке.

  5. Как только отображаются карты, система пользовательского интерфейса оповещает QuickAccessWalletService , что первая карта была выбрана с помощью вызова onWalletCardSelected .

    • onWalletCardSelected вызывается каждый раз , когда пользователь выбирает новую карту.
    • onWalletCardSelected можно было бы назвать даже если выбранная карта не изменилась.
  6. Когда пользователь закрывает бумажник быстрого доступа, пользовательский интерфейс системы оповещает QuickAccessWalletService путем вызова onWalletDismissed .

В приведенном выше примере пользователь помещает телефон в зону действия платежного терминала NFC, пока отображается бумажник. Ключевой компонент обработки платежей NFC является HostApduService , которые должны быть реализованы в процесс ПБДП , предоставляемый читателем NFC (для получения дополнительной информации см эмуляции карты на основе хоста ). Предполагается, что платежное приложение запускает действие для отображения хода и результата взаимодействия с терминалом NFC. Однако пользовательский интерфейс кошелька быстрого доступа отображается в верхней части окна приложения, что означает, что платежные операции скрыты пользовательским интерфейсом кошелька быстрого доступа. Чтобы исправить это, приложение должно уведомить пользовательский интерфейс системы о том, что пользовательский интерфейс кошелька быстрого доступа должен быть закрыт. Он может сделать это, получив ссылку на связанную 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, что означает , что только процесс System UI может связываться с реализациями QuickAccessWalletService . Имейте в виду , что побочные загружены приложения могут претендовать на это разрешение и получить полный доступ к QuickAccessWalletService данных на устройствах , работающих под управлением Android 10 или ниже. Чтобы избежать этого, рекомендуется, чтобы служба проверки версии сборки в onCreate и включить службу только на устройствах , работающих под управлением Android 11 и выше. Никаких других разрешений приложения не требуется, кроме тех, которые необходимы для предоставления платежных услуг с эмуляцией карты хоста.

Если NFC платежей за приложение по умолчанию не выполняет или экспорт QuickAccessWalletService , не отображается Wallet UI быстрого доступа.

Настройки в Android 12

Чтобы включить или отключить кошелек быстрого доступа с экрана блокировки, пользователи могут использовать Показать кошелек тумблер в Настройки> Дисплей> экрана блокировки. Чтобы отключить кошелек в тени, пользователи должны вручную отредактировать его в тени быстрых настроек.

Переключите, чтобы включить или отключить кошелек с экрана блокировки

Рисунок 5. Показать бумажник тумблер на странице экрана блокировки в настройках.

Настройки в Android 11

Пользователи могут отключить функцию кошелька быстрого доступа в приложении "Настройки". На странице настроек можно найти в меню Настройки> Система> Жесты> Карты и проходами.

Страница настроек для включения или отключения функции кошелька быстрого доступа
Рисунок 6. Настройки страницы , чтобы включить или отключить функцию бумажника быстрого доступа.

Настройка

Добавление представления кошелька быстрого доступа в другое место в системном интерфейсе

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 цель из системы сборки. Чтобы удалить кошелек быстрого доступа в меню питания , но добавить его в другой системе пользовательского интерфейса при условии зрения, включают цель сборки и ссылки удалить на GlobalActionsPanelPlugin из GlobalActionsImpl .

Установка конфигураций по умолчанию

Android 12

В Android 12 и выше кошелек быстрого доступа всегда отображается в тени быстрых настроек. Видимость Кошелька быстрого доступа на экране блокировки закрытого типа с помощью следующей безопасной настройки: LOCKSCREEN_SHOW_WALLET . Этот параметр определяет, отображается ли значок кошелька быстрого доступа в правом нижнем углу экрана блокировки. Этот параметр имеет значение true по умолчанию, но может быть отключена пользователем в меню Настройки> Дисплей> Блокировка> Показать бумажнике.

Android 11

В Android 11, видимость Wallet Быстрого доступа стробируются два режимными: GLOBAL_ACTIONS_PANEL_ENABLED и GLOBAL_ACTIONS_PANEL_AVAILABLE . В AVAILABLE управления параметрами ли функция может быть включен и выключен в настройках. Этот параметр имеет значение true по WalletPluginService . Если QuickAccessWallet не входит в сборку, то настройка остается false . ENABLED настройка установлена true по умолчанию в том же месте, но может быть отключена пользователем в настройках. Чтобы изменить поведение по умолчанию, изменить WalletPluginService#enableFeatureInSettings .

Проверка

Чтобы проверить реализацию кошелька быстрого доступа, запустите CTS и ручные тесты. Изменения в плагине также должны осуществлять включенные robolectric тестов .

CTS тесты

Запустите тесты CTS , расположенные на cts/tests/quickaccesswallet .

Ручные тесты для Android 12

Тестирование основных функций бумажника быстрого доступа требует платежный терминал NFC (реальный или поддельный) и платежей за приложение NFC , который реализует QuickAccessWalletService (бумажник приложение). Основные функции, которые необходимо протестировать, включают: доступность, нулевое состояние, выбор карты и поведение экрана блокировки.

Доступность

  • Если приложение для оплаты NFC по умолчанию не поддерживает эту функцию, кошелек быстрого доступа недоступен ни в быстрых настройках, ни на экране блокировки.
  • Если приложение для оплаты NFC по умолчанию поддерживает эту функцию, кошелек быстрого доступа доступен в тени быстрых настроек.
  • Если NFC платежи за приложение по умолчанию поддерживает эту функцию и если LOCKSCREEN_SHOW_WALLET установка true Кошелек быстрого доступа доступен на экране блокировки.
  • Если NFC платежи за приложение по умолчанию поддерживает эту функцию и если LOCKSCREEN_SHOW_WALLET параметр false Кошелек быстрого доступа не доступен на экране блокировки.

Нулевое состояние

  • Если QuickAccessWalletService включена и на экспорт , но не дает никаких карт, плитка в Shade появляется , как показано в примере на рисунке 7. При нажатии на плитку открывает NFC платежей приложение по умолчанию.

    Пример плитки в тени, показывающей приложение для оплаты NFC по умолчанию

    Рисунок 7. Пример плитка в тени , показывая по умолчанию NFC платежей приложения.

  • При нажатии на пустое представление состояния, как показано на рисунке 8, открывается приложение для оплаты NFC по умолчанию. Это пустое представление состояния отображается только тогда, когда у пользователя осталась одна карта в кошельке, он удаляет карту со страницы сведений о карте, а затем возвращается к представлению кошелька.

  • На экране блокировки отображается значок кошелька.

Просмотр пустого состояния в кошельке быстрого доступа

Рисунок 8. Пустой просмотр состояния в бумажнике UI быстрого доступа.

Ненулевое состояние

  • Если приложение кошелька предоставляет одну или несколько карт, отображается плитка в тени, как показано на рисунке 9.

    Пример плитки в тени, когда в приложении кошелька есть одна или несколько карт

    Рисунок 9. Пример плитка в тени , когда бумажник приложение имеет одну или несколько карт.

  • При нажатии на плитку открывается карусель карт.

  • На экране блокировки отображается кнопка, открывающая кошелек быстрого доступа.

    Пользовательский интерфейс кошелька быстрого доступа с отображаемой картой

    Рисунок 10. Быстрый доступ Wallet интерфейс с картой отображается.

  • Если отображаемая карта представляет собой способ оплаты NFC, при поднесении телефона к платежному терминалу NFC будет использован этот способ оплаты, и просмотр кошелька будет закрыт.

  • При нажатии на отображаемую карточку открывается подробное описание активности для этой карточки.

  • Если несколько карт предоставляются QuickAccessWalletService , пользователь имеет возможность красть между картами.

  • Меню переполнения содержит одну запись: открыть настройки экрана блокировки , так что пользователь может изменить опцию Show бумажника.

Тесты состояния блокировки

  • Если телефон заблокирован, то бумажник виден на тени быстрых настроек, с описанием Добавить карту , если карта не существует в приложении оплаты по умолчанию, или разблокировать , чтобы использовать , если есть карты в приложении платежного по умолчанию.
  • Если телефон заблокирован, видимость кошелька на экране блокировки контролируется 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

Тестирование основных функций бумажника быстрого доступа требует платежный терминал NFC (реальный или поддельный) и платежей за приложение NFC , который реализует QuickAccessWalletService (бумажник приложение). Основные функции, которые необходимо протестировать, включают доступность, нулевое состояние, выбор карты и поведение экрана блокировки.

Доступность

  • Если GLOBAL_ACTIONS_PANEL_ENABLED установки true и NFC платежи за приложение по умолчанию поддерживает функцию Кошелек быстрого доступа доступен.
  • Если GLOBAL_ACTIONS_PANEL_ENABLED установка false и NFC платежи за приложение по умолчанию поддерживает функцию Кошелек Быстрого доступа не доступен.
  • Если GLOBAL_ACTIONS_PANEL_ENABLED установка true и NFC платежей за приложение по умолчанию не поддерживает функцию Кошелька Быстрый доступ не доступен.
  • Если GLOBAL_ACTIONS_PANEL_ENABLED установка false и NFC платежей за приложение по умолчанию не поддерживает функцию Кошелька Быстрый доступ не доступен.

Нулевое состояние

  • Если QuickAccessWalletService включен и на экспорте , но не дает никаких карт, быстрый доступ отображает Wallet UI пустого состояние просмотр.
  • При нажатии на пустое представление состояния открывается приложение кошелька.

    Просмотр пустого состояния в пользовательском интерфейсе кошелька быстрого доступа
    Рисунок 11. Пустое состояние просмотр в Кошельке UI быстрого доступа.

Ненулевое состояние

  • Если приложение кошелька предоставляет одну или несколько карт, они отображаются в пользовательском интерфейсе кошелька быстрого доступа.

    Пользовательский интерфейс кошелька быстрого доступа с отображаемой картой
    Рисунок 12. Быстрый доступ Wallet интерфейс с картой отображается.
  • Если отображаемая карта представляет собой способ оплаты 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.