Wallet को क्विक ऐक्सेस करने की सुविधा

Android 11 से उपलब्ध, Quick Access Wallet की सुविधा की मदद से, उपयोगकर्ता पावर मेन्यू से सीधे पेमेंट कार्ड और उनसे जुड़े पास ऐक्सेस कर सकते हैं. इसके मुख्य इस्तेमाल के उदाहरणों में, एनएफ़सी टर्मिनल पर लेन-देन करने से पहले, पेमेंट का सही तरीका चुनना और आने वाले इवेंट के लिए, फ़्लाइट और अन्य पास को तुरंत ऐक्सेस करना शामिल है.

Android 12 या इसके बाद के वर्शन में, क्विक ऐक्सेस Wallet की सुविधा, शेड से उपलब्ध है. इसके बारे में पहली और दूसरी इमेज में दिखाया गया है.

शेड में Wallet को फटाफट ऐक्सेस करने की सुविधा
पहली इमेज. क्विक ऐक्सेस वॉलेट की सुविधा (डिवाइस लॉक होने पर).
शेड में Wallet को फटाफट ऐक्सेस करने की सुविधा
दूसरी इमेज. क्विक ऐक्सेस वॉलेट की सुविधा (डिवाइस अनलॉक होने पर).

Android 11 में, यह सुविधा पावर मेन्यू से उपलब्ध है. इसके बारे में तीसरी इमेज में दिखाया गया है.

पावर मेन्यू में Wallet को फटाफट ऐक्सेस करने की सुविधा
तीसरी इमेज. पावर मेन्यू में Quick Access Wallet की सुविधा.

ज़रूरी शर्तें

क्विक ऐक्सेस वॉलेट की सुविधा का इस्तेमाल करने के लिए, आपके डिवाइस में एनएफ़सी होना चाहिए. यह सुविधा, डिफ़ॉल्ट एनएफ़सी पेमेंट ऐप्लिकेशन के QuickAccessWalletService से जुड़ी होती है. इसका मतलब है कि डिवाइस में एनएफ़सी होस्ट-आधारित कार्ड इम्यूलेशन (एचसीई) की सुविधा भी होनी चाहिए.

सुविधाओं के बारे में खास जानकारी

Quick Access Wallet की सुविधा के दो हिस्से होते हैं: Quick Access Wallet का यूज़र इंटरफ़ेस (यूआई) और Quick Access Wallet का कार्ड उपलब्ध कराने वाला ऐप्लिकेशन.

Android 12 या इसके बाद के वर्शन में, Wallet का यूज़र इंटरफ़ेस (यूआई), सिस्टम यूज़र इंटरफ़ेस (यूआई) में चलता है. यह frameworks/base/packages/SystemUI/src/com/android/systemui/wallet में मौजूद होता है. Android 11 में, Wallet का यूज़र इंटरफ़ेस (यूआई) platform/packages/apps/QuickAccessWalletमें मौजूद होता है. इसे इंस्टॉल और अनुमति वाली सूची में शामिल करना ज़रूरी है.

Quick Access Wallet का कार्ड उपलब्ध कराने वाला ऐप्लिकेशन, डिफ़ॉल्ट एनएफ़सी पेमेंट ऐप्लिकेशन होता है. उपयोगकर्ता, एनएफ़सी पेमेंट के कई ऐप्लिकेशन एक साथ इंस्टॉल कर सकते हैं. हालांकि, पावर मेन्यू पर कार्ड सिर्फ़ डिफ़ॉल्ट एनएफ़सी पेमेंट ऐप्लिकेशन ही दिखा सकता है. आपके पास यह तय करने का विकल्प होता है कि शुरुआत में, एनएफ़सी पेमेंट के किस ऐप्लिकेशन को डिफ़ॉल्ट के तौर पर सेट किया जाए. हालांकि, उपयोगकर्ता सेटिंग में जाकर, कोई दूसरा ऐप्लिकेशन चुन सकते हैं. अगर एनएफ़सी पेमेंट का सिर्फ़ एक ऐप्लिकेशन इंस्टॉल किया गया है, तो वह अपने-आप डिफ़ॉल्ट के तौर पर सेट हो जाता है. इसके बारे में CardEmulationManager में देखें.

लागू करना

Quick Access Wallet के यूज़र इंटरफ़ेस (यूआई) पर कार्ड दिखाने के लिए, एनएफ़सी पेमेंट ऐप्लिकेशन में QuickAccessWalletService लागू करना ज़रूरी है. पेमेंट ऐप्लिकेशन में, सेवा का विज्ञापन करने वाली मेनिफ़ेस्ट एंट्री शामिल होनी चाहिए.

यह पक्का करने के लिए कि सिर्फ़ सिस्टम यूज़र इंटरफ़ेस (यूआई), QuickAccessWalletService से जुड़ सके, एनएफ़सी पेमेंट ऐप्लिकेशन के लिए android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE की अनुमति ज़रूरी है. इस अनुमति की ज़रूरत होने से यह पक्का होता है कि सिर्फ़ सिस्टम यूज़र इंटरफ़ेस (यूआई), 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>

वॉलेट के बारे में ज़्यादा जानकारी, लिंक की गई एक्सएमएल फ़ाइल में शामिल है:

<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 का रेफ़रंस भी पाना चाहिए. साथ ही, TYPE_NFC_PAYMENT_STARTED के इवेंट टाइप के साथ QuickAccessWalletService#sendEvent को कॉल करना चाहिए. इससे क्विक ऐक्सेस Wallet का यूज़र इंटरफ़ेस (यूआई) बंद हो जाता है. इस तरह, उपयोगकर्ता को पेमेंट से जुड़ी गतिविधि साफ़ तौर पर दिखती है.

QuickAccessWalletService को लागू करने के बारे में ज़्यादा जानकारी के लिए, QuickAccessWalletService और TestQuickAccessWalletService सीटीएस टेस्ट देखें.

Android 11 में Quick Access Wallet का यूज़र इंटरफ़ेस (यूआई) चालू करना

Android 11 में, Quick Access Wallet को पावर मेन्यू से उपलब्ध कराने के लिए, बिल्ड में QuickAccessWallet टारगेट शामिल करें. साथ ही, overlay/frameworks/base/packages/SystemUI/res/values/config.xml फ़ाइल में, नीचे दिए गए कोड के नमूने में बोल्ड में दी गई लाइन जोड़कर, globalactions.wallet प्लग-इन चालू करें.

<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>

def_nfc_payment_component का इस्तेमाल करके, सेटिंग कॉन्फ़िगरेशन फ़ाइल में, डिफ़ॉल्ट एनएफ़सी पेमेंट ऐप्लिकेशन तय करें.

डिफ़ॉल्ट एनएफ़सी पेमेंट ऐप्लिकेशन में, Quick Access Wallet को कार्ड उपलब्ध कराने के लिए, QuickAccessWalletService की सुविधा होनी चाहिए. अगर डिफ़ॉल्ट एनएफ़सी पेमेंट ऐप्लिकेशन, इस सेवा को एक्सपोर्ट नहीं करता है, तो Wallet का यूज़र इंटरफ़ेस (यूआई) छिपा दिया जाता है.

QuickAccessWalletService को लागू करने से जुड़ी जानकारी

QuickAccessWalletService में तीन ऐब्स्ट्रैक्ट तरीके होते हैं, जिन्हें लागू करना ज़रूरी है: onWalletCardsRequested, onWalletCardSelected, और onWalletDismissed. एनएफ़सी पेमेंट से ठीक पहले, Quick Access Wallet को देखने पर कॉल का क्रम कैसा होता है, यह नीचे दिए गए क्रम के डायग्राम में दिखाया गया है.

क्विक ऐक्सेस वॉलेट का क्रम दिखाने वाला डायग्राम

क्विक ऐक्सेस वॉलेट देखने पर कॉल सीक्वेंस का उदाहरण
चौथी इमेज. क्विक ऐक्सेस वॉलेट को देखने पर, कॉल के क्रम का उदाहरण. देखा गया.

Quick Access Wallet के सभी व्यू के बाद एनएफ़सी पेमेंट नहीं किया जाता. हालांकि, ऊपर दी गई चौथी इमेज में, QuickAccessWalletService की सभी क्षमताओं के बारे में बताया गया है. इस उदाहरण में, क्विक ऐक्सेस वॉलेट का कार्ड उपलब्ध कराने वाला ऐप्लिकेशन, नीले रंग में दिखाए गए एलिमेंट को लागू करता है. यह माना जाता है कि पेमेंट कार्ड, डिवाइस पर डेटाबेस में सेव किए जाते हैं और PaymentCardManager नाम के इंटरफ़ेस के ज़रिए ऐक्सेस किए जाते हैं. यह भी माना जाता है कि PaymentActivity नाम की गतिविधि, एनएफ़सी पेमेंट का नतीजा दिखाती है. फ़्लो इस तरह आगे बढ़ता है:

  1. उपयोगकर्ता, Quick Access Wallet को खोलने के लिए कोई जेस्चर करता है.
  2. Quick Access Wallet का यूज़र इंटरफ़ेस (यूआई) (सिस्टम यूज़र इंटरफ़ेस (यूआई) का हिस्सा), पैकेज मैनेजर की जांच करके यह देखता है कि डिफ़ॉल्ट एनएफ़सी पेमेंट ऐप्लिकेशन, QuickAccessWalletService को एक्सपोर्ट करता है या नहीं.

    • अगर सेवा एक्सपोर्ट नहीं की जाती है, तो क्विक ऐक्सेस वॉलेट नहीं दिखता.
  3. क्विक ऐक्सेस वॉलेट का यूज़र इंटरफ़ेस (यूआई), QuickAccessWalletService से जुड़ता है और onWalletCardsRequested को कॉल करता है. इस तरीके में, अनुरोध का एक ऑब्जेक्ट लिया जाता है. इसमें उपलब्ध कराए जा सकने वाले कार्ड की संख्या और साइज़ के बारे में डेटा और एक कॉलबैक शामिल होता है. कॉलबैक को बैकग्राउंड थ्रेड से कॉल किया जा सकता है.

  4. QuickAccessWalletService , उन कार्ड की गिनती करता है जिन्हें उसे दिखाना है. इसके बाद, उपलब्ध कराए गए कॉलबैक पर onSuccess तरीके को कॉल करता है. हमारा सुझाव है कि सेवा, इन कार्रवाइयों को बैकग्राउंड थ्रेड पर करे.

  5. कार्ड दिखने के तुरंत बाद, सिस्टम यूज़र इंटरफ़ेस (यूआई), QuickAccessWalletService को सूचना देता है कि पहला कार्ड चुना गया है. इसके लिए, वह onWalletCardSelected को कॉल करता है.

    • जब भी उपयोगकर्ता कोई नया कार्ड चुनता है, तब onWalletCardSelected को कॉल किया जाता है.
    • ऐसा हो सकता है कि फ़िलहाल चुने गए कार्ड में कोई बदलाव न होने पर भी, onWalletCardSelected को कॉल किया जाए.
  6. जब उपयोगकर्ता क्विक ऐक्सेस वॉलेट को बंद करता है, तो सिस्टम यूज़र इंटरफ़ेस (यूआई), onWalletDismissed को कॉल करके, QuickAccessWalletService को इसकी सूचना देता है.

ऊपर दिए गए उदाहरण में, वॉलेट दिखते समय उपयोगकर्ता फ़ोन को एनएफ़सी पेमेंट टर्मिनल की रेंज में लाता है. एनएफ़सी पेमेंट को हैंडल करने का एक अहम कॉम्पोनेंट, HostApduService है. एनएफ़सी रीडर से मिले एपीडीयू को प्रोसेस करने के लिए, इसे लागू करना ज़रूरी है. ज़्यादा जानकारी के लिए, होस्ट-आधारित कार्ड इम्यूलेशन देखें. यह माना जाता है कि पेमेंट ऐप्लिकेशन, एनएफ़सी टर्मिनल के साथ इंटरैक्शन की प्रोसेस और नतीजा दिखाने के लिए कोई गतिविधि शुरू करता है. हालांकि, Quick Access Wallet का यूज़र इंटरफ़ेस (यूआई), ऐप्लिकेशन विंडो के ऊपर दिखता है. इसका मतलब है कि Quick Access Wallet के यूज़र इंटरफ़ेस (यूआई) की वजह से, पेमेंट की गतिविधि नहीं दिखती. इसे ठीक करने के लिए, ऐप्लिकेशन को सिस्टम यूज़र इंटरफ़ेस (यूआई) को सूचना देनी होगी कि Quick Access Wallet का यूज़र इंटरफ़ेस (यूआई) बंद किया जाना चाहिए. इसके लिए, वह बाउंड QuickAccessWalletService का रेफ़रंस पा सकता है. साथ ही, TYPE_NFC_PAYMENT_STARTED के इवेंट टाइप के साथ sendWalletServiceEvent को कॉल कर सकता है.

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 एपीआई रेफ़रंस देखें.

अनुमतियां

QuickAccessWalletService के लिए मेनिफ़ेस्ट एंट्री में, Android 11 में जोड़ी गई android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE की अनुमति ज़रूरी है. यह सिग्नेचर-लेवल की अनुमति है, जो सिस्टम यूज़र इंटरफ़ेस (यूआई) के पास होती है. इसका मतलब है कि सिर्फ़ सिस्टम यूज़र इंटरफ़ेस (यूआई) की प्रोसेस, QuickAccessWalletService के लागू किए गए वर्शन से जुड़ सकती है. ध्यान दें कि साइडलोड किए गए ऐप्लिकेशन, इस अनुमति का दावा कर सकते हैं. साथ ही, Android 10 या इससे पहले के वर्शन वाले डिवाइसों पर, QuickAccessWalletService के डेटा का पूरा ऐक्सेस पा सकते हैं. इसे रोकने के लिए, हमारा सुझाव है कि सेवा, onCreate में बिल्ड वर्शन की जांच करे. साथ ही, सेवा को सिर्फ़ Android 11 और इसके बाद के वर्शन वाले डिवाइसों पर चालू करे. होस्ट कार्ड इम्यूलेशन पेमेंट सेवाएं उपलब्ध कराने के लिए ज़रूरी अनुमतियों के अलावा, किसी अन्य ऐप्लिकेशन की अनुमति की ज़रूरत नहीं होती.

अगर डिफ़ॉल्ट एनएफ़सी पेमेंट ऐप्लिकेशन, QuickAccessWalletService को लागू या एक्सपोर्ट नहीं करता है, तो Quick Access Wallet का यूज़र इंटरफ़ेस (यूआई) नहीं दिखता.

Android 12 में सेटिंग

लॉक स्क्रीन से Quick Access Wallet को चालू या बंद करने के लिए, उपयोगकर्ता सेटिंग > डिसप्ले > लॉक स्क्रीन में जाकर, वॉलेट दिखाएं टॉगल का इस्तेमाल कर सकते हैं. शेड में वॉलेट को बंद करने के लिए, उपयोगकर्ताओं को क्विक सेटिंग शेड में जाकर, इसे मैन्युअल तरीके से एडिट करना होगा.

लॉक स्क्रीन से वॉलेट ऐक्सेस करने की सुविधा चालू या बंद करने के लिए, टॉगल करें

पांचवी इमेज. सेटिंग में, लॉक स्क्रीन पेज पर, वॉलेट दिखाएं टॉगल.

Android 11 में सेटिंग

उपयोगकर्ता, सेटिंग ऐप्लिकेशन से Quick Access Wallet की सुविधा बंद कर सकते हैं. सेटिंग पेज, सेटिंग > सिस्टम > हाथ के जेस्चर > कार्ड और पास में मौजूद होता है.

क्विक ऐक्सेस वॉलेट सुविधा को चालू या बंद करने के लिए सेटिंग पेज
छठी इमेज. क्विक ऐक्सेस Wallet की सुविधा को चालू या बंद करने के लिए सेटिंग पेज.

पसंद के मुताबिक बनाएं

सिस्टम यूज़र इंटरफ़ेस (यूआई) में किसी दूसरी जगह पर, Quick Access Wallet का व्यू जोड़ना

क्विक ऐक्सेस वॉलेट का यूज़र इंटरफ़ेस (यूआई), सिस्टम प्लग-इन के तौर पर बनाया गया है. हालांकि, एओएसपी के लागू किए गए वर्शन में, इसका इस्तेमाल 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 का यूज़र इंटरफ़ेस (यूआई) 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 टारगेट को हटा दें. पावर मेन्यू से क्विक ऐक्सेस Wallet को हटाने, लेकिन सिस्टम यूज़र इंटरफ़ेस (यूआई) के किसी दूसरे व्यू में इसे जोड़ने के लिए, बिल्ड टारगेट शामिल करें. साथ ही, GlobalActionsPanelPlugin से GlobalActionsImpl के रेफ़रंस हटाएं.

डिफ़ॉल्ट कॉन्फ़िगरेशन सेट करना

Android 12

Android 12 या इसके बाद के वर्शन में, Quick Access Wallet हमेशा क्विक सेटिंग शेड में दिखता है. लॉक स्क्रीन पर Quick Access Wallet की उपलब्धता, सुरक्षा से जुड़ी इस सेटिंग से तय होती है: LOCKSCREEN_SHOW_WALLET. इस सेटिंग से यह कंट्रोल किया जाता है कि लॉक स्क्रीन के सबसे नीचे दाईं ओर, क्विक ऐक्सेस वॉलेट का आइकॉन दिखे या नहीं. यह सेटिंग डिफ़ॉल्ट रूप से true पर सेट होती है. हालांकि, उपयोगकर्ता इसे सेटिंग > डिसप्ले > लॉक स्क्रीन > वॉलेट दिखाएं में जाकर बंद कर सकते हैं.

Android 11

Android 11 में, Quick Access Wallet की उपलब्धता, सुरक्षा से जुड़ी इन दो सेटिंग से तय होती है: GLOBAL_ACTIONS_PANEL_ENABLED और GLOBAL_ACTIONS_PANEL_AVAILABLE. AVAILABLE सेटिंग से यह कंट्रोल किया जाता है कि सेटिंग में जाकर, इस सुविधा को चालू और बंद किया जा सकता है या नहीं. यह सेटिंग WalletPluginService से true पर सेट होती है. अगर बिल्ड में QuickAccessWallet शामिल नहीं है, तो सेटिंग false पर बनी रहती है. ENABLED सेटिंग, डिफ़ॉल्ट रूप से उसी जगह पर true पर सेट होती है. हालांकि, उपयोगकर्ता सेटिंग में जाकर इसे बंद कर सकते हैं. डिफ़ॉल्ट व्यवहार बदलने के लिए, WalletPluginService#enableFeatureInSettings में बदलाव करें.

सत्यापन

Quick Access Wallet को लागू करने की पुष्टि करने के लिए, सीटीएस और मैन्युअल टेस्ट चलाएं. प्लग्-इन में किए गए बदलावों के लिए, शामिल किए गए रोबोइलेक्ट्रिक टेस्ट भी चलाए जाने चाहिए.

सीटीएस टेस्ट

cts/tests/quickaccesswallet में मौजूद सीटीएस टेस्ट चलाएं.

Android 12 के लिए मैन्युअल टेस्ट

Quick Access Wallet की मुख्य सुविधाओं की जांच करने के लिए, एनएफ़सी पेमेंट टर्मिनल (असली या नकली) और एनएफ़सी पेमेंट ऐप्लिकेशन की ज़रूरत होती है. एनएफ़सी पेमेंट ऐप्लिकेशन में QuickAccessWalletService (वॉलेट ऐप्लिकेशन) लागू किया गया हो. मुख्य सुविधाओं की जांच करना ज़रूरी है. इनमें उपलब्धता, ज़ीरो स्टेट, कार्ड चुनना, और लॉक स्क्रीन का व्यवहार शामिल है.

उपलब्धता

  • अगर डिफ़ॉल्ट एनएफ़सी पेमेंट ऐप्लिकेशन, इस सुविधा के साथ काम नहीं करता है, तो Quick Access Wallet को न तो क्विक सेटिंग में और न ही लॉक स्क्रीन पर ऐक्सेस किया जा सकता है.
  • अगर डिफ़ॉल्ट एनएफ़सी पेमेंट ऐप्लिकेशन, इस सुविधा के साथ काम करता है, तो Quick Access Wallet को क्विक सेटिंग शेड में ऐक्सेस किया जा सकता है.
  • अगर डिफ़ॉल्ट एनएफ़सी पेमेंट ऐप्लिकेशन, इस सुविधा के साथ काम करता है और LOCKSCREEN_SHOW_WALLET सेटिंग true पर सेट है, तो Quick Access Wallet को लॉक स्क्रीन पर ऐक्सेस किया जा सकता है.
  • अगर डिफ़ॉल्ट एनएफ़सी पेमेंट ऐप्लिकेशन, इस सुविधा के साथ काम करता है और LOCKSCREEN_SHOW_WALLET सेटिंग false पर सेट है, तो Quick Access Wallet को लॉक स्क्रीन पर ऐक्सेस नहीं किया जा सकता.

ज़ीरो स्टेट

  • अगर QuickAccessWalletService चालू है और एक्सपोर्ट किया गया है, लेकिन कोई कार्ड उपलब्ध नहीं कराता है, तो शेड में टाइल, सातवीं इमेज में दिखाए गए उदाहरण की तरह दिखती है. टाइल पर क्लिक करने से, डिफ़ॉल्ट एनएफ़सी पेमेंट ऐप्लिकेशन खुलता है.

    शेड में मौजूद टाइल का उदाहरण, जिसमें एनएफ़सी पेमेंट के लिए डिफ़ॉल्ट ऐप्लिकेशन दिखाया गया है

    सातवीं इमेज. शेड में टाइल का उदाहरण. इसमें डिफ़ॉल्ट एनएफ़सी पेमेंट ऐप्लिकेशन दिख रहा है.

  • आठवीं इमेज में दिखाए गए खाली स्टेट व्यू पर क्लिक करने से, डिफ़ॉल्ट एनएफ़सी पेमेंट ऐप्लिकेशन खुलता है. यह खाली स्टेट व्यू सिर्फ़ तब दिखता है, जब उपयोगकर्ता के वॉलेट में एक कार्ड बचा हो, वह कार्ड की जानकारी वाले पेज से कार्ड हटा दे, और फिर वॉलेट व्यू पर वापस जाए.

  • लॉक स्क्रीन पर वॉलेट का आइकॉन दिखता है.

क्विक ऐक्सेस वॉलेट में, खाली स्थिति की जानकारी देने वाला व्यू

आठवीं इमेज. क्विक ऐक्सेस वॉलेट यूज़र इंटरफ़ेस (यूआई) में खाली स्टेट व्यू.

नॉन-ज़ीरो स्टेट

  • अगर वॉलेट ऐप्लिकेशन, एक या उससे ज़्यादा कार्ड उपलब्ध कराता है, तो शेड में टाइल, नौवीं इमेज में दिखाए गए उदाहरण की तरह दिखती है.

    वॉलेट ऐप्लिकेशन में एक या उससे ज़्यादा कार्ड होने पर, शेड में मौजूद टाइल का उदाहरण

    नौवीं इमेज. शेड में टाइल का उदाहरण. इसमें वॉलेट ऐप्लिकेशन में एक या उससे ज़्यादा कार्ड मौजूद हैं.

  • टाइल पर क्लिक करने से, कार्ड का कैरसेल दिखता है.

  • लॉक स्क्रीन पर एक बटन दिखता है जो क्विक ऐक्सेस वॉलेट खोलता है.

    कार्ड के साथ Wallet का क्विक ऐक्सेस यूज़र इंटरफ़ेस (यूआई)

    दसवीं इमेज. Quick Access Wallet का यूज़र इंटरफ़ेस (यूआई). इसमें एक कार्ड दिख रहा है.

  • अगर दिखाए गए कार्ड में एनएफ़सी पेमेंट का तरीका दिखता है, तो फ़ोन को एनएफ़सी पेमेंट टर्मिनल के पास ले जाने पर, पेमेंट के उसी तरीके का इस्तेमाल होता है. साथ ही, वॉलेट व्यू बंद हो जाता है.

  • दिखाए गए किसी कार्ड पर क्लिक करने से, उस कार्ड की ज़्यादा जानकारी वाली गतिविधि खुलती है.

  • अगर QuickAccessWalletService से एक से ज़्यादा कार्ड उपलब्ध कराए जाते हैं, तो उपयोगकर्ता कार्ड के बीच स्वाइप कर सकता है.

  • ओवरफ़्लो मेन्यू में एक एंट्री होती है: लॉक स्क्रीन की सेटिंग खोलें, ताकि उपयोगकर्ता वॉलेट दिखाएं विकल्प बदल सके.

लॉक स्टेट के टेस्ट

  • अगर फ़ोन लॉक है, तो वॉलेट, क्विक सेटिंग शेड में दिखता है. अगर डिफ़ॉल्ट पेमेंट ऐप्लिकेशन में कोई कार्ड मौजूद नहीं है, तो कार्ड जोड़ें की जानकारी दिखती है. वहीं, अगर डिफ़ॉल्ट पेमेंट ऐप्लिकेशन में कार्ड मौजूद हैं, तो इस्तेमाल करने के लिए अनलॉक करें की जानकारी दिखती है.
  • अगर फ़ोन लॉक है, तो लॉक स्क्रीन पर वॉलेट की उपलब्धता, Secure.LOCKSCREEN_SHOW_WALLET सेटिंग से कंट्रोल होती है. इसे सेटिंग में जाकर कंट्रोल किया जा सकता है.
  • अगर फ़ोन लॉक है, LOCKSCREEN_SHOW_WALLET सेटिंग false पर सेट है, और डिफ़ॉल्ट एनएफ़सी पेमेंट ऐप्लिकेशन में कोई कार्ड मौजूद नहीं है, तो लॉक स्क्रीन पर वॉलेट नहीं दिखता.
  • अगर फ़ोन लॉक है, LOCKSCREEN_SHOW_WALLET सेटिंग true पर सेट है, और डिफ़ॉल्ट एनएफ़सी पेमेंट ऐप्लिकेशन में कोई कार्ड मौजूद नहीं है, तो लॉक स्क्रीन पर वॉलेट नहीं दिखता.
  • अगर फ़ोन लॉक है, LOCKSCREEN_SHOW_WALLET सेटिंग true पर सेट है, और डिफ़ॉल्ट एनएफ़सी पेमेंट ऐप्लिकेशन में कार्ड मौजूद हैं, तो लॉक स्क्रीन पर वॉलेट दिखता है.
  • लॉक स्क्रीन पर वॉलेट दिखते समय फ़ोन को अनलॉक करने पर, कार्ड के लिए फिर से क्वेरी की जाती है. इससे कार्ड का कॉन्टेंट बदल सकता है.

सुलभता की जांच

  • TalkBack का इस्तेमाल करने वाले लोग, वॉलेट व्यू में बाएं और दाएं स्वाइप करके नेविगेट कर सकते हैं. साथ ही, कार्ड के कॉन्टेंट के बारे में जानकारी सुनकर भी नेविगेट कर सकते हैं.
  • TalkBack चालू होने पर, बाएं और दाएं स्वाइप करने से, बारी-बारी से हर कार्ड चुना जाता है. TalkBack का इस्तेमाल करने वाले लोग, एनएफ़सी पेमेंट टर्मिनल पर एनएफ़सी पेमेंट का तरीका चुनकर उसका इस्तेमाल कर सकते हैं.

Android 11 के लिए मैन्युअल टेस्ट

Quick Access Wallet की मुख्य सुविधाओं की जांच करने के लिए, एनएफ़सी पेमेंट टर्मिनल (असली या नकली) और एनएफ़सी पेमेंट ऐप्लिकेशन की ज़रूरत होती है. एनएफ़सी पेमेंट ऐप्लिकेशन में QuickAccessWalletService (वॉलेट ऐप्लिकेशन) लागू किया गया हो. मुख्य सुविधाओं की जांच करना ज़रूरी है. इनमें उपलब्धता, ज़ीरो स्टेट, कार्ड चुनना, और लॉक स्क्रीन का व्यवहार शामिल है.

उपलब्धता

  • अगर GLOBAL_ACTIONS_PANEL_ENABLED सेटिंग true पर सेट है और डिफ़ॉल्ट एनएफ़सी पेमेंट ऐप्लिकेशन, इस सुविधा के साथ काम करता है, तो Quick Access Wallet को ऐक्सेस किया जा सकता है.
  • अगर GLOBAL_ACTIONS_PANEL_ENABLED सेटिंग false पर सेट है और डिफ़ॉल्ट एनएफ़सी पेमेंट ऐप्लिकेशन, इस सुविधा के साथ काम करता है, तो Quick Access Wallet को ऐक्सेस नहीं किया जा सकता.
  • अगर GLOBAL_ACTIONS_PANEL_ENABLED सेटिंग true पर सेट है और डिफ़ॉल्ट एनएफ़सी पेमेंट ऐप्लिकेशन, इस सुविधा के साथ काम नहीं करता है, तो Quick Access Wallet को ऐक्सेस नहीं किया जा सकता.
  • अगर GLOBAL_ACTIONS_PANEL_ENABLED सेटिंग false पर सेट है और डिफ़ॉल्ट एनएफ़सी पेमेंट ऐप्लिकेशन, इस सुविधा के साथ काम नहीं करता है, तो Quick Access Wallet को ऐक्सेस नहीं किया जा सकता.

ज़ीरो स्टेट

  • अगर QuickAccessWalletService चालू है और एक्सपोर्ट किया गया है, लेकिन कोई कार्ड उपलब्ध नहीं कराता है, तो क्विक ऐक्सेस वॉलेट के यूज़र इंटरफ़ेस (यूआई) में खाली स्टेट व्यू दिखता है.
  • खाली स्टेट व्यू पर क्लिक करने से, वॉलेट ऐप्लिकेशन खुलता है.

    क्विक ऐक्सेस वॉलेट यूज़र इंटरफ़ेस (यूआई) में, खाली स्थिति की जानकारी देने वाला व्यू
    ग्यारहवीं इमेज. क्विक ऐक्सेस Wallet के यूज़र इंटरफ़ेस (यूआई) में खाली स्टेट व्यू.

नॉन-ज़ीरो स्टेट

  • अगर वॉलेट ऐप्लिकेशन, एक या उससे ज़्यादा कार्ड उपलब्ध कराता है, तो कार्ड, क्विक ऐक्सेस वॉलेट के यूज़र इंटरफ़ेस (यूआई) में दिखते हैं.

    कार्ड के साथ Wallet का क्विक ऐक्सेस यूज़र इंटरफ़ेस (यूआई)
    बारहवीं इमेज. Quick Access Wallet का यूज़र इंटरफ़ेस (यूआई). इसमें एक कार्ड दिख रहा है.
  • अगर दिखाए गए कार्ड में एनएफ़सी पेमेंट का तरीका दिखता है, तो फ़ोन को एनएफ़सी पेमेंट टर्मिनल के पास ले जाने पर, पेमेंट के उसी तरीके का इस्तेमाल होता है. साथ ही, वॉलेट व्यू बंद हो जाता है.

  • दिखाए गए किसी कार्ड पर क्लिक करने से, वॉलेट व्यू बंद हो जाता है. साथ ही, उस कार्ड की ज़्यादा जानकारी वाली गतिविधि खुलती है.

  • अगर QuickAccessWalletService से एक से ज़्यादा कार्ड उपलब्ध कराए जाते हैं, तो उपयोगकर्ता कार्ड के बीच स्वाइप कर सकता है.

  • ओवरफ़्लो मेन्यू में दो एंट्री होती हैं: एक से वॉलेट ऐप्लिकेशन खुलता है और दूसरी से सेटिंग में कार्ड और पास दिखाएं स्क्रीन खुलती है.

लॉक स्टेट के टेस्ट

  • अगर फ़ोन लॉक है, तो वॉलेट की उपलब्धता, Settings.Secure.POWER_MENU_LOCK_SHOW_CONTENT सेटिंग से कंट्रोल होती है. इसे सेटिंग में जाकर कंट्रोल किया जा सकता है.
  • अगर फ़ोन लॉक है और POWER_MENU_LOCK_SHOW_CONTENT सेटिंग false पर सेट है, तो वॉलेट नहीं दिखता.
  • अगर फ़ोन लॉक है और POWER_MENU_LOCK_SHOW_CONTENT सेटिंग true पर सेट है, तो वॉलेट दिखता है.
  • लॉक स्क्रीन पर वॉलेट दिखते समय फ़ोन को अनलॉक करने पर, कार्ड के लिए फिर से क्वेरी की जाती है. इससे कार्ड का कॉन्टेंट बदल सकता है.

सुलभता की जांच

  • TalkBack का इस्तेमाल करने वाले लोग, वॉलेट व्यू में बाएं और दाएं स्वाइप करके नेविगेट कर सकते हैं. साथ ही, कार्ड के कॉन्टेंट के बारे में जानकारी सुनकर भी नेविगेट कर सकते हैं.
  • TalkBack चालू होने पर, बाएं और दाएं स्वाइप करने से, बारी-बारी से हर कार्ड चुना जाता है. TalkBack का इस्तेमाल करने वाले लोग, एनएफ़सी पेमेंट टर्मिनल पर एनएफ़सी पेमेंट का तरीका चुनकर उसका इस्तेमाल कर सकते हैं.