দ্রুত অ্যাক্সেস ওয়ালেট

Android 11 থেকে উপলব্ধ কুইক অ্যাক্সেস ওয়ালেট বৈশিষ্ট্যটি ব্যবহারকারীকে পাওয়ার মেনু থেকে সরাসরি পেমেন্ট কার্ড এবং প্রাসঙ্গিক পাস অ্যাক্সেস করতে দেয়। প্রধান ব্যবহারের ক্ষেত্রে একটি NFC টার্মিনালে একটি লেনদেন সম্পাদন করার আগে উপযুক্ত অর্থপ্রদানের পদ্ধতি নির্বাচন করা এবং আসন্ন ইভেন্টগুলির জন্য দ্রুত ফ্লাইট এবং অন্যান্য পাস অ্যাক্সেস করা অন্তর্ভুক্ত।

Android 12 বা উচ্চতর সংস্করণে, চিত্র 1 এবং চিত্র 2-এ দেখানো শেড থেকে দ্রুত অ্যাক্সেস ওয়ালেট বৈশিষ্ট্যটি উপলব্ধ।

ছায়ায় দ্রুত অ্যাক্সেস ওয়ালেট বৈশিষ্ট্য
চিত্র 1. দ্রুত অ্যাক্সেস ওয়ালেট বৈশিষ্ট্য (ডিভাইস লক)।
ছায়ায় দ্রুত অ্যাক্সেস ওয়ালেট বৈশিষ্ট্য
চিত্র 2. দ্রুত অ্যাক্সেস ওয়ালেট বৈশিষ্ট্য (ডিভাইস আনলক)।

অ্যান্ড্রয়েড 11-এ, চিত্র 3-এ দেখানো হিসাবে বৈশিষ্ট্যটি পাওয়ার মেনু থেকে পাওয়া যায়।

পাওয়ার মেনুতে দ্রুত অ্যাক্সেস ওয়ালেট বৈশিষ্ট্য
চিত্র 3. পাওয়ার মেনুতে দ্রুত অ্যাক্সেস ওয়ালেট বৈশিষ্ট্য।

প্রয়োজনীয়তা

দ্রুত অ্যাক্সেস ওয়ালেট বৈশিষ্ট্য ব্যবহার করার জন্য আপনার ডিভাইসে অবশ্যই NFC থাকতে হবে৷ বৈশিষ্ট্যটি ডিফল্ট NFC পেমেন্ট অ্যাপের QuickAccessWalletService এর সাথে আবদ্ধ, যার মানে ডিভাইসটিকে অবশ্যই NFC হোস্ট-ভিত্তিক কার্ড ইমুলেশন (HCE) সমর্থন করতে হবে৷

বৈশিষ্ট্য ওভারভিউ

দ্রুত অ্যাক্সেস ওয়ালেটের দুটি অংশ রয়েছে: দ্রুত অ্যাক্সেস ওয়ালেট UI এবং দ্রুত অ্যাক্সেস ওয়ালেট কার্ড প্রদানকারী৷

Android 12 বা উচ্চতর সংস্করণে, Wallet UI সিস্টেম UI-তে চলে এবং frameworks/base/packages/SystemUI/src/com/android/systemui/wallet এ অবস্থিত। অ্যান্ড্রয়েড 11-এ, platform/packages/apps/QuickAccessWallet এ অবস্থিত Wallet UI, অবশ্যই ইনস্টল এবং সাদা তালিকাভুক্ত হতে হবে।

Quick Access Wallet কার্ড প্রদানকারী হল ডিফল্ট NFC পেমেন্ট অ্যাপ। ব্যবহারকারীদের একাধিক এনএফসি পেমেন্ট অ্যাপ একই সাথে ইনস্টল করা থাকতে পারে, তবে শুধুমাত্র ডিফল্ট এনএফসি পেমেন্ট অ্যাপ পাওয়ার মেনুতে কার্ড দেখাতে পারে। কোন NFC পেমেন্ট অ্যাপটি প্রাথমিকভাবে ডিফল্ট হিসেবে সেট করা আছে তা আপনি নির্দিষ্ট করতে পারেন, তবে ব্যবহারকারীরা সেটিংসে একটি ভিন্ন অ্যাপ নির্বাচন করতে পারেন। শুধুমাত্র একটি NFC পেমেন্ট অ্যাপ ইনস্টল করা থাকলে, এটি স্বয়ংক্রিয়ভাবে ডিফল্ট হয়ে যায় ( CardEmulationManager দেখুন)।

বাস্তবায়ন

দ্রুত অ্যাক্সেস ওয়ালেট UI-তে কার্ড সরবরাহ করতে, 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 এর ইভেন্টের ধরন সহ কল ​​করার চেষ্টা করা উচিত। . এর ফলে দ্রুত অ্যাক্সেস ওয়ালেট UI খারিজ হয়ে যায়, এইভাবে ব্যবহারকারীকে অর্থপ্রদানের কার্যকলাপের একটি বাধাহীন দৃশ্যের অনুমতি দেয়।

QuickAccessWalletService বাস্তবায়নের অতিরিক্ত ডকুমেন্টেশনের জন্য, QuickAccessWalletService এবং TestQuickAccessWalletService CTS পরীক্ষা দেখুন।

Android 11-এ দ্রুত অ্যাক্সেস ওয়ালেট UI সক্ষম করা হচ্ছে

অ্যান্ড্রয়েড 11-এর পাওয়ার মেনু থেকে দ্রুত অ্যাক্সেস ওয়ালেটটি উপলভ্য হওয়ার জন্য কনফিগার করতে, বিল্ডে QuickAccessWallet টার্গেট অন্তর্ভুক্ত করুন এবং overlay/frameworks/base/packages/SystemUI/res/values/config.xml নীচের কোড নমুনায় বোল্ড লাইন যোগ করে 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>

def_nfc_payment_component ব্যবহার করে সেটিংস কনফিগারেশন ফাইলে ডিফল্ট NFC পেমেন্ট অ্যাপটি নির্দিষ্ট করুন।

ডিফল্ট NFC পেমেন্ট অ্যাপকে দ্রুত অ্যাক্সেস ওয়ালেটে কার্ড সরবরাহ করতে QuickAccessWalletService প্রকাশ করতে হবে। যদি ডিফল্ট NFC পেমেন্ট অ্যাপ এই পরিষেবাটি রপ্তানি না করে, তাহলে ওয়ালেট UI লুকানো থাকে।

QuickAccessWalletService বাস্তবায়নের বিবরণ

QuickAccessWalletService তিনটি বিমূর্ত পদ্ধতি রয়েছে যা অবশ্যই প্রয়োগ করতে হবে: onWalletCardsRequested , onWalletCardSelected এবং onWalletDismissed । নিচের সিকোয়েন্স ডায়াগ্রামটি একটি কল সিকোয়েন্সকে চিত্রিত করে যখন দ্রুত অ্যাক্সেস ওয়ালেটটি NFC পেমেন্টের ঠিক আগে দেখা হয়।

দ্রুত অ্যাক্সেস ওয়ালেট সিকোয়েন্স ডায়াগ্রাম

দ্রুত অ্যাক্সেস ওয়ালেট দেখা হলে কলের ক্রম উদাহরণ
চিত্র 4. যখন দ্রুত অ্যাক্সেস ওয়ালেট দেখা হয় তখন কলের ক্রম উদাহরণ।

কুইক অ্যাকসেস ওয়ালেটের সমস্ত ভিউ একটি NFC পেমেন্ট দ্বারা অনুসরণ করা হয় না, কিন্তু উপরের চিত্র 4 QuickAccessWalletService এর সমস্ত ক্ষমতাকে চিত্রিত করে৷ এই উদাহরণে, Quick Access Wallet কার্ড প্রদানকারী নীল রঙে বর্ণিত উপাদানগুলিকে প্রয়োগ করে৷ এটি ধরে নেওয়া হয় যে পেমেন্ট কার্ডগুলি ডিভাইসে একটি ডাটাবেসে সংরক্ষণ করা হয় এবং PaymentCardManager নামে একটি ইন্টারফেসের মাধ্যমে অ্যাক্সেস করা হয়। এটি আরও অনুমান করা হয় যে PaymentActivity নামক একটি কার্যকলাপ একটি NFC পেমেন্টের ফলাফল প্রদর্শন করে। প্রবাহটি নিম্নরূপ হয়:

  1. ব্যবহারকারী দ্রুত অ্যাক্সেস ওয়ালেট আনতে একটি অঙ্গভঙ্গি সম্পাদন করে।
  2. কুইক অ্যাকসেস ওয়ালেট UI (সিস্টেম UI-এর অংশ) ডিফল্ট NFC পেমেন্ট অ্যাপ QuickAccessWalletService রপ্তানি করে কিনা তা দেখতে প্যাকেজ ম্যানেজারকে পরীক্ষা করে।

    • পরিষেবাটি রপ্তানি করা না হলে, দ্রুত অ্যাক্সেস ওয়ালেটটি প্রদর্শিত হয় না৷
  3. দ্রুত অ্যাক্সেস ওয়ালেট UI QuickAccessWalletService এর সাথে আবদ্ধ হয় এবং onWalletCardsRequested কল করে। এই পদ্ধতিটি প্রদান করা যেতে পারে এমন কার্ডের সংখ্যা এবং আকার এবং একটি কলব্যাক সম্পর্কে ডেটা ধারণকারী একটি অনুরোধ বস্তু নেয়। কলব্যাক একটি ব্যাকগ্রাউন্ড থ্রেড থেকে কল করা যেতে পারে।

  4. QuickAccessWalletService যে কার্ডগুলি দেখাতে চায় সেগুলি গণনা করে, তারপর প্রদত্ত কলব্যাকে onSuccess পদ্ধতিতে কল করে৷ এটি সুপারিশ করা হয় যে পরিষেবাটি একটি ব্যাকগ্রাউন্ড থ্রেডে এই ক্রিয়াগুলি সম্পাদন করে৷

  5. কার্ডগুলি প্রদর্শিত হওয়ার সাথে সাথে, সিস্টেম UI QuickAccessWalletService অবহিত করে যে প্রথম কার্ডটি onWalletCardSelected এ কল করে নির্বাচন করা হয়েছে।

    • ব্যবহারকারী যখনই একটি নতুন কার্ড নির্বাচন করে তখনই onWalletCardSelected বলা হয়।
    • বর্তমানে নির্বাচিত কার্ড পরিবর্তন না করলেও onWalletCardSelected কল করা হতে পারে।
  6. যখন ব্যবহারকারী দ্রুত অ্যাক্সেস ওয়ালেট খারিজ করে, তখন সিস্টেম UI কল করে QuickAccessWalletService অবহিত করে onWalletDismissed .

উপরের উদাহরণে, মানিব্যাগটি প্রদর্শিত হওয়ার সময় ব্যবহারকারী ফোনটিকে একটি NFC পেমেন্ট টার্মিনালের পরিসরে নিয়ে আসে। NFC পেমেন্ট পরিচালনার একটি মূল উপাদান হল HostApduService , যা NFC রিডার দ্বারা প্রদত্ত APDUগুলি প্রক্রিয়া করার জন্য প্রয়োগ করা আবশ্যক (আরও তথ্যের জন্য, হোস্ট-ভিত্তিক কার্ড এমুলেশন দেখুন)। এটি অনুমান করা হয় যে পেমেন্ট অ্যাপটি NFC টার্মিনালের সাথে মিথস্ক্রিয়াটির অগ্রগতি এবং ফলাফল প্রদর্শন করতে একটি কার্যকলাপ শুরু করে। যাইহোক, দ্রুত অ্যাক্সেস ওয়ালেট UI অ্যাপ উইন্ডোর উপরে প্রদর্শিত হয়, যার অর্থ অর্থপ্রদানের কার্যকলাপ দ্রুত অ্যাক্সেস ওয়ালেট UI দ্বারা অস্পষ্ট হয়। এটি সংশোধন করতে, অ্যাপটিকে অবশ্যই সিস্টেম UI-কে অবহিত করতে হবে যে দ্রুত অ্যাক্সেস ওয়ালেট UI খারিজ করা উচিত। এটি আবদ্ধ 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 API রেফারেন্স দেখুন।

অনুমতি

QuickAccessWalletService এর জন্য ম্যানিফেস্ট এন্ট্রির জন্য অবশ্যই android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE অনুমতির প্রয়োজন হবে যা Android 11-এ প্রবর্তিত হয়েছে। এটি সিস্টেম UI দ্বারা ধারণ করা একটি স্বাক্ষর-স্তরের অনুমতি, যার মানে হল যে শুধুমাত্র সিস্টেম UI প্রক্রিয়াটি QuickAccessWalletService এর বাস্তবায়নের সাথে আবদ্ধ হতে পারে। সচেতন থাকুন যে সাইড-লোড করা অ্যাপগুলি এই অনুমতি দাবি করতে পারে এবং Android 10 বা তার কম সংস্করণে চলমান ডিভাইসগুলিতে QuickAccessWalletService ডেটাতে সম্পূর্ণ অ্যাক্সেস পেতে পারে। এটি প্রতিরোধ করার জন্য, এটি সুপারিশ করা হয় যে পরিষেবাটি onCreate এ বিল্ড সংস্করণটি পরীক্ষা করে দেখুন এবং শুধুমাত্র Android 11 এবং তার পরবর্তী সংস্করণে চলমান ডিভাইসগুলিতে পরিষেবাটি সক্ষম করুন৷ হোস্ট কার্ড এমুলেশন পেমেন্ট পরিষেবা প্রদানের জন্য প্রয়োজনীয় এর বাইরে অন্য কোনো অ্যাপের অনুমতির প্রয়োজন নেই।

যদি ডিফল্ট NFC পেমেন্ট অ্যাপ QuickAccessWalletService বাস্তবায়ন বা রপ্তানি না করে, তাহলে দ্রুত অ্যাক্সেস ওয়ালেট UI প্রদর্শিত হয় না।

Android 12-এ সেটিংস

লক স্ক্রীন থেকে দ্রুত অ্যাক্সেস ওয়ালেট সক্ষম বা নিষ্ক্রিয় করতে, ব্যবহারকারীরা সেটিংস > প্রদর্শন > লক স্ক্রীনে ওয়ালেট দেখান টগল ব্যবহার করতে পারেন। ছায়ায় মানিব্যাগ নিষ্ক্রিয় করতে, ব্যবহারকারীদের অবশ্যই দ্রুত সেটিংস ছায়ায় ম্যানুয়ালি সম্পাদনা করতে হবে।

লক স্ক্রীন থেকে ওয়ালেট সক্ষম বা অক্ষম করতে টগল করুন৷

চিত্র 5. সেটিংসে লক স্ক্রীন পৃষ্ঠায় ওয়ালেট টগল দেখান৷

Android 11-এ সেটিংস

ব্যবহারকারীরা সেটিংস অ্যাপ থেকে দ্রুত অ্যাক্সেস ওয়ালেট বৈশিষ্ট্যটি বন্ধ করতে পারেন। সেটিংস পৃষ্ঠাটি সেটিংস > সিস্টেম > অঙ্গভঙ্গি > কার্ড এবং পাসে পাওয়া যায়।

দ্রুত অ্যাক্সেস ওয়ালেট বৈশিষ্ট্য সক্ষম বা নিষ্ক্রিয় করতে সেটিংস পৃষ্ঠা৷
চিত্র 6. দ্রুত অ্যাক্সেস ওয়ালেট বৈশিষ্ট্য সক্রিয় বা নিষ্ক্রিয় করতে সেটিংস পৃষ্ঠা৷

কাস্টমাইজেশন

সিস্টেম UI-তে অন্য অবস্থানে দ্রুত অ্যাক্সেস ওয়ালেট ভিউ যোগ করা হচ্ছে

দ্রুত অ্যাক্সেস ওয়ালেট 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);
  }
}

দ্রুত অ্যাক্সেস ওয়ালেট UI GlobalActionsPanelPlugin এবং PanelViewController প্রয়োগ করে। GlobalActionsDialog com.android.systemui.Dependency ব্যবহার করে ওয়ালেট প্লাগইনের একটি উদাহরণ পায়:

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

প্লাগইনটি নন-নাল এবং onPanelShown দ্বারা প্রত্যাবর্তিত PanelViewController নন-নাল তা পরীক্ষা করার পরে, ডায়ালগটি getPanelContent দ্বারা প্রদত্ত View তার নিজস্ব 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 প্রদত্ত ভিউতে যোগ করতে, বিল্ড টার্গেট অন্তর্ভুক্ত করুন এবং GlobalActionsImpl থেকে GlobalActionsPanelPlugin এর রেফারেন্সগুলি সরান।

ডিফল্ট কনফিগারেশন সেট করা হচ্ছে

অ্যান্ড্রয়েড 12

Android 12 বা উচ্চতর সংস্করণে, দ্রুত সেটিংস শেডে দ্রুত অ্যাক্সেস ওয়ালেট সর্বদা দৃশ্যমান। লক স্ক্রিনে দ্রুত অ্যাক্সেস ওয়ালেটের দৃশ্যমানতা নিম্নলিখিত সুরক্ষিত সেটিং দ্বারা গেট করা হয়েছে: LOCKSCREEN_SHOW_WALLET । লক স্ক্রিনের নীচে ডানদিকে দ্রুত অ্যাক্সেস ওয়ালেট আইকনটি দেখানো হবে কিনা তা এই সেটিং নিয়ন্ত্রণ করে৷ এই সেটিংটি ডিফল্টরূপে true হিসাবে সেট করা থাকে, তবে ব্যবহারকারী সেটিংস > প্রদর্শন > লক স্ক্রীন > ওয়ালেট দেখান এ বন্ধ করে দিতে পারেন।

অ্যান্ড্রয়েড 11

Android 11-এ, দ্রুত অ্যাক্সেস ওয়ালেট দৃশ্যমানতা দুটি সুরক্ষিত সেটিংস দ্বারা গেট করা হয়েছে: GLOBAL_ACTIONS_PANEL_ENABLED এবং GLOBAL_ACTIONS_PANEL_AVAILABLEAVAILABLE সেটিংস সেটিংসে বৈশিষ্ট্যটি চালু বা বন্ধ করা যাবে কিনা তা নিয়ন্ত্রণ করে৷ এই সেটিংটি WalletPluginService দ্বারা true হিসাবে সেট করা হয়েছে৷ যদি QuickAccessWallet বিল্ডে অন্তর্ভুক্ত না হয়, তাহলে সেটিংটি false থেকে যায়। ENABLED সেটিং একই জায়গায় ডিফল্টরূপে true হিসাবে সেট করা আছে, কিন্তু সেটিংসে ব্যবহারকারী দ্বারা বন্ধ করা যেতে পারে৷ ডিফল্ট আচরণ পরিবর্তন করতে, WalletPluginService#enableFeatureInSettings সংশোধন করুন।

বৈধতা

আপনার দ্রুত অ্যাক্সেস ওয়ালেটের বাস্তবায়ন যাচাই করতে, CTS এবং ম্যানুয়াল পরীক্ষা চালান। প্লাগইনের পরিবর্তনের জন্য অন্তর্ভুক্ত রোবোলেক্ট্রিক পরীক্ষাগুলিও অনুশীলন করা উচিত।

CTS পরীক্ষা

cts/tests/quickaccesswallet এ অবস্থিত CTS পরীক্ষা চালান।

Android 12 এর জন্য ম্যানুয়াল পরীক্ষা

দ্রুত অ্যাক্সেস ওয়ালেটের মূল বৈশিষ্ট্যগুলি পরীক্ষা করার জন্য একটি NFC পেমেন্ট টার্মিনাল (আসল বা নকল) এবং একটি NFC পেমেন্ট অ্যাপ প্রয়োজন যা QuickAccessWalletService (ওয়ালেট অ্যাপ) প্রয়োগ করে৷ মূল বৈশিষ্ট্যগুলি যা অবশ্যই পরীক্ষা করা উচিত তার মধ্যে রয়েছে: প্রাপ্যতা, শূন্য অবস্থা, কার্ড নির্বাচন এবং লক স্ক্রীন আচরণ।

উপস্থিতি

  • যদি ডিফল্ট NFC পেমেন্ট অ্যাপটি বৈশিষ্ট্যটিকে সমর্থন না করে, তাহলে দ্রুত সেটিংস বা লক স্ক্রিনে দ্রুত অ্যাক্সেস ওয়ালেটটি অ্যাক্সেসযোগ্য নয়।
  • যদি ডিফল্ট NFC পেমেন্ট অ্যাপটি বৈশিষ্ট্যটিকে সমর্থন করে, তাহলে দ্রুত সেটিংস শেডে দ্রুত অ্যাক্সেস ওয়ালেট অ্যাক্সেসযোগ্য।
  • যদি ডিফল্ট NFC পেমেন্ট অ্যাপটি বৈশিষ্ট্যটিকে সমর্থন করে এবং যদি LOCKSCREEN_SHOW_WALLET সেটিংসটি true হয়, তাহলে দ্রুত অ্যাক্সেস ওয়ালেটটি লক স্ক্রিনে অ্যাক্সেসযোগ্য।
  • যদি ডিফল্ট NFC পেমেন্ট অ্যাপটি বৈশিষ্ট্যটিকে সমর্থন করে এবং যদি LOCKSCREEN_SHOW_WALLET সেটিংস false হয়, তাহলে লক স্ক্রিনে দ্রুত অ্যাক্সেস ওয়ালেট অ্যাক্সেসযোগ্য নয়৷

শূন্য রাষ্ট্র

  • যদি QuickAccessWalletService সক্ষম করা থাকে এবং রপ্তানি করা হয় কিন্তু কোনো কার্ড প্রদান না করে, তাহলে চিত্র 7-এর উদাহরণে দেখানো শেডের টাইলটি প্রদর্শিত হবে। টাইলটিতে ক্লিক করলে ডিফল্ট NFC পেমেন্ট অ্যাপটি খোলে।

    ডিফল্ট NFC পেমেন্ট অ্যাপ দেখানো ছায়ায় উদাহরণ টাইল

    চিত্র 7. ছায়ায় টাইলের উদাহরণ যা ডিফল্ট NFC পেমেন্ট অ্যাপ দেখাচ্ছে।

  • চিত্র 8-এ দেখানো খালি স্টেট ভিউতে ক্লিক করলে ডিফল্ট NFC পেমেন্ট অ্যাপ খোলে। এই খালি স্টেট ভিউটি তখনই প্রদর্শিত হয় যখন ব্যবহারকারীর ওয়ালেটে একটি কার্ড অবশিষ্ট থাকে, কার্ডের বিশদ পৃষ্ঠা থেকে কার্ডটি সরিয়ে দেয় এবং তারপরে ওয়ালেট ভিউতে ফিরে যায়।

  • লক স্ক্রিন ওয়ালেট আইকন দেখায়।

দ্রুত অ্যাক্সেস ওয়ালেটে খালি স্টেট ভিউ

চিত্র 8. দ্রুত অ্যাক্সেস ওয়ালেট UI-তে খালি অবস্থার দৃশ্য।

নন-জিরো স্টেট

  • যদি ওয়ালেট অ্যাপটি এক বা একাধিক কার্ড প্রদান করে, তাহলে চিত্র 9-এ দেখানো টাইলটি ছায়ায় প্রদর্শিত হবে।

    ওয়ালেট অ্যাপে এক বা একাধিক কার্ড থাকলে ছায়ায় টাইলের উদাহরণ

    চিত্র 9. ওয়ালেট অ্যাপে এক বা একাধিক কার্ড থাকলে ছায়ায় টাইলের উদাহরণ।

  • টাইলের উপর ক্লিক করা একটি কার্ড ক্যারোজেল দেখায়।

  • লক স্ক্রীন একটি বোতাম দেখায় যা দ্রুত অ্যাক্সেস ওয়ালেট খোলে।

    একটি কার্ড প্রদর্শন সহ দ্রুত অ্যাক্সেস ওয়ালেট UI

    চিত্র 10. একটি কার্ডের সাথে দ্রুত অ্যাক্সেস ওয়ালেট UI।

  • যদি প্রদর্শিত কার্ডটি একটি NFC পেমেন্ট পদ্ধতির প্রতিনিধিত্ব করে, তাহলে একটি NFC পেমেন্ট টার্মিনালে ফোনটি ধরে রাখলে সেই অর্থপ্রদানের পদ্ধতিটি ব্যবহার করা হবে এবং ওয়ালেট ভিউ খারিজ হয়ে যাবে।

  • একটি প্রদর্শিত কার্ডে ক্লিক করা সেই কার্ডের জন্য বিস্তারিত কার্যকলাপ খোলে।

  • QuickAccessWalletService দ্বারা একাধিক কার্ড প্রদান করা হলে, ব্যবহারকারী কার্ডগুলির মধ্যে সোয়াইপ করতে সক্ষম।

  • ওভারফ্লো মেনুতে একটি এন্ট্রি রয়েছে: লক স্ক্রিন সেটিংস খুলুন যাতে ব্যবহারকারী ওয়ালেট দেখান বিকল্পটি পরিবর্তন করতে পারেন।

লক রাষ্ট্র পরীক্ষা

  • ফোনটি লক করা থাকলে, ডিফল্ট পেমেন্ট অ্যাপে কোনো কার্ড না থাকলে একটি কার্ড যোগ করুন , অথবা ডিফল্ট অর্থপ্রদান অ্যাপে কার্ড বিদ্যমান থাকলে ব্যবহার করার জন্য আনলক করার বিবরণ সহ দ্রুত সেটিংস শেডে ওয়ালেটটি দৃশ্যমান হয়।
  • ফোনটি লক করা থাকলে, লক স্ক্রিনে ওয়ালেটের দৃশ্যমানতা Secure.LOCKSCREEN_SHOW_WALLET সেটিংস দ্বারা নিয়ন্ত্রিত হয়, যা সেটিংসে নিয়ন্ত্রিত হয়৷
  • ফোনটি লক করা থাকলে, LOCKSCREEN_SHOW_WALLET false , এবং ডিফল্ট NFC পেমেন্ট অ্যাপে কোনও কার্ড বিদ্যমান না থাকলে, লক স্ক্রিনে ওয়ালেটটি প্রদর্শিত হয় না৷
  • ফোনটি লক করা থাকলে, LOCKSCREEN_SHOW_WALLET true , এবং ডিফল্ট NFC পেমেন্ট অ্যাপে কোনো কার্ড বিদ্যমান না থাকলে, মানিব্যাগটি লক স্ক্রিনে প্রদর্শিত হয় না।
  • যদি ফোনটি লক করা থাকে, LOCKSCREEN_SHOW_WALLET true , এবং কার্ডগুলি ডিফল্ট NFC অর্থপ্রদান অ্যাপে বিদ্যমান থাকে, মানিব্যাগটি লক স্ক্রিনে প্রদর্শিত হয়৷
  • লক স্ক্রিনে মানিব্যাগটি প্রদর্শিত হওয়ার সময় ফোনটি আনলক করার ফলে কার্ডগুলি প্রয়োজন হয়, যার ফলে কার্ডের বিভিন্ন সামগ্রী হতে পারে৷

অ্যাক্সেসিবিলিটি পরীক্ষা

  • টকব্যাক ব্যবহারকারীরা বাম এবং ডানদিকে সোয়াইপ করে এবং কার্ডের বিষয়বস্তুর বিবরণ শুনে ওয়ালেট ভিউ নেভিগেট করতে পারেন।
  • টকব্যাক সক্ষম করে বাম এবং ডানদিকে সোয়াইপ করলে প্রতিটি কার্ড পালাক্রমে নির্বাচন করে। টকব্যাক ব্যবহারকারীরা একটি 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 সক্ষম করা থাকে এবং রপ্তানি করা হয় কিন্তু কোনো কার্ড প্রদান না করে, তাহলে দ্রুত অ্যাক্সেস ওয়ালেট UI খালি অবস্থা প্রদর্শন করে।
  • খালি স্টেট ভিউতে ক্লিক করলে ওয়ালেট অ্যাপ খোলে।

    দ্রুত অ্যাক্সেস ওয়ালেট UI-তে খালি স্টেট ভিউ
    চিত্র 11. দ্রুত অ্যাক্সেস ওয়ালেট UI-তে খালি অবস্থার দৃশ্য।

নন-জিরো স্টেট

  • যদি ওয়ালেট অ্যাপ এক বা একাধিক কার্ড সরবরাহ করে, কার্ডগুলি দ্রুত অ্যাক্সেস ওয়ালেট UI-তে প্রদর্শিত হয়।

    একটি কার্ড প্রদর্শন সহ দ্রুত অ্যাক্সেস ওয়ালেট UI
    চিত্র 12. একটি কার্ডের সাথে দ্রুত অ্যাক্সেস ওয়ালেট UI।
  • যদি প্রদর্শিত কার্ডটি একটি NFC পেমেন্ট পদ্ধতির প্রতিনিধিত্ব করে, তাহলে একটি NFC পেমেন্ট টার্মিনালে ফোনটি ধরে রাখলে সেই অর্থপ্রদানের পদ্ধতিটি ব্যবহার করা হবে এবং ওয়ালেট ভিউ খারিজ হয়ে যাবে।

  • প্রদর্শিত কার্ডে ক্লিক করলে ওয়ালেট ভিউ খারিজ হয়ে যায় এবং সেই কার্ডের জন্য বিস্তারিত কার্যকলাপ খুলে যায়।

  • QuickAccessWalletService দ্বারা একাধিক কার্ড প্রদান করা হলে, ব্যবহারকারী কার্ডগুলির মধ্যে সোয়াইপ করতে সক্ষম।

  • ওভারফ্লো মেনুতে দুটি এন্ট্রি রয়েছে: একটি যেটি ওয়ালেট অ্যাপটি খোলে এবং একটি যা সেটিংসে কার্ড দেখায় এবং স্ক্রিন পাস করে

লক রাষ্ট্র পরীক্ষা

  • ফোনটি লক করা থাকলে, ওয়ালেটের দৃশ্যমানতা সেটিংস দ্বারা নিয়ন্ত্রিত হয়। Settings.Secure.POWER_MENU_LOCK_SHOW_CONTENT সেটিংস, যা সেটিংসে নিয়ন্ত্রণ করা যেতে পারে।
  • ফোনটি লক করা থাকলে এবং POWER_MENU_LOCK_SHOW_CONTENT false হলে, ওয়ালেটটি প্রদর্শিত হয় না৷
  • ফোনটি লক করা থাকলে এবং POWER_MENU_LOCK_SHOW_CONTENT true হলে, ওয়ালেটটি প্রদর্শিত হয়৷
  • লক স্ক্রিনে মানিব্যাগটি প্রদর্শিত হওয়ার সময় ফোনটি আনলক করার ফলে কার্ডগুলি পুনরায় জিজ্ঞাসা করা হয়, যার ফলে কার্ডের বিষয়বস্তু ভিন্ন হতে পারে।

অ্যাক্সেসিবিলিটি পরীক্ষা

  • টকব্যাক ব্যবহারকারীরা বাম এবং ডানদিকে সোয়াইপ করে এবং কার্ডের বিষয়বস্তু বর্ণনা শুনে ওয়ালেট ভিউ নেভিগেট করতে পারেন।
  • টকব্যাক সক্ষম করে বাম এবং ডানদিকে সোয়াইপ করলে প্রতিটি কার্ড পালাক্রমে নির্বাচন করে। টকব্যাক ব্যবহারকারীরা একটি NFC পেমেন্ট টার্মিনালে একটি NFC পেমেন্ট পদ্ধতি নির্বাচন এবং ব্যবহার করতে পারেন।