تتيح ميزة "محفظة الوصول السريع"، المتوفّرة في الإصدار Android 11، للمستخدم استخدام بطاقات الدفع والبطاقات ذات الصلة مباشرةً من قائمة الطاقة. تشمل حالات الاستخدام الرئيسية اختيار طريقة الدفع المناسبة قبل إجراء معاملة في محطة NFC والوصول بسرعة إلى الرحلات الجوية والبطاقات الأخرى للأحداث القادمة.
في نظام التشغيل Android 12 أو الإصدارات الأحدث، تتوفّر ميزة "محفظة الوصول السريع" من خلال القائمة المنسدلة كما هو موضّح في الشكل 1 والشكل 2.
في Android 11، تتوفر هذه الميزة من قائمة زر التشغيل كما هو موضح في الشكل 3.
المتطلبات
يجب أن يتضمّن جهازك تقنية NFC لاستخدام ميزة "محفظة Google" للوصول السريع. ترتبط الميزةQuickAccessWalletService
بتطبيق الدفع التلقائي عبر NFC، ما يعني أنّه يجب أن يكون الجهاز متوافقًا أيضًا مع محاكاة البطاقة المستندة إلى المضيف (HCE).
نظرة عامة على الميزات
تتألّف "محفظة الوصول السريع" من جزأين: واجهة مستخدم "محفظة الوصول السريع" و موفِّر بطاقة "محفظة الوصول السريع".
في الإصدار 12 من Android أو الإصدارات الأحدث، تعمل واجهة مستخدم "محفظة Google" في واجهة مستخدم النظام
، ويمكن العثور عليها في
frameworks/base/packages/SystemUI/src/com/android/systemui/wallet
. في الإصدار
Android 11، يجب تثبيت واجهة مستخدم "محفظة Google"، والتي يمكن العثور عليها في
platform/packages/apps/QuickAccessWallet
،
وإدراجها في القائمة البيضاء.
مقدّم بطاقة "محفظة الوصول السريع" هو تطبيق الدفع التلقائي عبر تقنية NFC. يمكن للمستخدمين تثبيت عدة تطبيقات دفع عبر تقنية NFC في الوقت نفسه، ولكن لا يمكن إلا لتطبيق الدفع التلقائي عبر تقنية NFC عرض البطاقات في قائمة الطاقة. يمكنك تحديد تطبيق الدفع الذي يستخدم تقنية NFC والذي سيتم ضبطه على أنّه التلقائي في البداية، ولكن يمكن للمستخدمين اختيار تطبيق مختلف في "الإعدادات". إذا تم تثبيت تطبيق دفع واحد فقط عبر NFC، يصبح هو
التطبيق التلقائي تلقائيًا (راجِع
CardEmulationManager
).
التنفيذ
لتوفير البطاقات في واجهة مستخدم "محفظة الوصول السريع"، يجب أن تُطبِّق
تطبيقات الدفع عبر تكنولوجيا NFC
QuickAccessWalletService
.
يجب أن تتضمّن تطبيقات الدفع إدخال بيان يُعلِن عن الخدمة.
لضمان أنّ واجهة مستخدم النظام فقط هي التي يمكنها الربط بـ QuickAccessWalletService
،
يجب أن يحصل تطبيق الدفع عبر NFC على
إذن 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>
يتم تضمين معلومات إضافية عن المحفظة في ملف 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 مباشرةً.
لا تظهر دفعة عبر NFC في بعض مشاهدات "محفظة الوصول السريع" بعد،
ولكن يوضّح الشكل 4 أعلاه كل إمكانات
QuickAccessWalletService
. في هذا المثال، يقوم موفر بطاقة الوصول
السريع في المحفظة بتنفيذ العناصر الموضحة باللون الأزرق. ومن المفترض أن يتم تخزين بطاقات الدفع على الجهاز في قاعدة بيانات وأن يتم الوصول إليها من خلال واجهة اسمها PaymentCardManager
. ويُفترض أيضًا أنّ النشاط
الذي يُسمى PaymentActivity
يعرض نتيجة دفعة عبر NFC. تستمر العملية التالية:
- ينفِّذ المستخدم إيماءة لعرض "محفظة الوصول السريع".
إنّ واجهة مستخدم "محفظة الوصول السريع" (جزء من واجهة مستخدم النظام) تتحقّق من مدير الحِزم لمعرفة ما إذا كان تطبيق الدفع عبر NFC التلقائي يصدِّر البيانات
QuickAccessWalletService
.- في حال عدم تصدير الخدمة، لن يتم عرض "محفظة الوصول السريع".
ترتبط واجهة مستخدم "الوصول السريع إلى المحفظة" بـ
QuickAccessWalletService
و تستدعيonWalletCardsRequested
. تأخذ هذه الطريقة عنصر طلب يحتوي على بيانات عن عدد البطاقات التي يمكن تقديمها وحجمها وطريقة استدعاء. يمكن استدعاء رد الاتصال من سلسلة محادثات في الخلفية.تحسب
QuickAccessWalletService
البطاقات التي تريد عرضها، ثم تستدعي طريقةonSuccess
في دالة الاستدعاء المقدَّمة. يُنصح بأن تُجري الخدمة هذه الإجراءات في سلسلة مهام في الخلفية.بعد عرض البطاقات، يُرسِل واجهة مستخدم النظام إشعارًا إلى
QuickAccessWalletService
بأنّه تم اختيار البطاقة الأولى من خلال الاتصال ببرمجةonWalletCardSelected
.- يتمّ استدعاء
onWalletCardSelected
في كلّ مرّة يختار فيها المستخدِم بطاقة جديدة. - قد يتمّ استدعاء
onWalletCardSelected
حتى إذا لم يتمّ تغيير البطاقة التي تم اختيارها حاليًا.
- يتمّ استدعاء
عندما يرفض المستخدم "محفظة Google" للوصول السريع، يُرسِل واجهة مستخدم النظام إشعارًا إلى
QuickAccessWalletService
من خلال الاتصال بـonWalletDismissed
.
في المثال أعلاه، يضع المستخدم الهاتف في نطاق محطة الدفع عبر NFC
أثناء عرض المحفظة. إنّ HostApduService
هو مكوّن رئيسي في معالجة المعاملات باستخدام تقنية NFC، ويجب تنفيذه لمعالجة وحدات APDU التي يوفّرها قارئ 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
.
الأذونات
يجب أن يتطلّب إدخال البيان الخاص بـ QuickAccessWalletService
إذن
android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE
الذي تم تقديمه في
Android 11. هذا إذن على مستوى التوقيع يملكه
واجهة مستخدم النظام، ما يعني أنّه
لا يمكن إلا لعملية واجهة مستخدم النظام الربط بعمليات تنفيذ
QuickAccessWalletService
. يُرجى العِلم أنّه يمكن للتطبيقات المثبّتة من مصدر غير معروف طلب الحصول على هذا الإذن والحصول على إمكانية الوصول الكامل إلى بيانات QuickAccessWalletService
على الأجهزة التي تعمل بنظام التشغيل Android 10 أو الإصدارات الأقدم. لتجنُّب حدوث ذلك، ننصحك بأن تتحقق الخدمة
من إصدار الإصدار في onCreate
وتفعّل الخدمة على الأجهزة التي تعمل
بنظام التشغيل Android 11 والإصدارات الأحدث فقط. ولا يلزم الحصول على أذونات تطبيقات أخرى
غير تلك اللازمة لتوفير خدمات الدفع التي تتم من خلال محاكاة
البطاقات المضيفة.
إذا لم ينفِّذ تطبيق الدفع التلقائي عبر NFC أو يصدِّر
QuickAccessWalletService
، لن يتم عرض واجهة مستخدم "محفظة Google" للوصول السريع.
الإعدادات في Android 12
لتفعيل "محفظة الوصول السريع" أو إيقافها من شاشة القفل، يمكن للمستخدمين استخدام مفتاح التبديل عرض المحفظة في الإعدادات > الشاشة > شاشة القفل. لإيقاف المحفظة في نافذة المنبثقة، على المستخدمين تعديل ها يدويًا في نافذة المنبثقة للإعدادات السريعة.
الشكل 5: عرض زر الإيقاف/التفعيل الخاص بالمحفظة في صفحة "شاشة القفل" ضمن "الإعدادات"
الإعدادات في Android 11
يمكن للمستخدمين إيقاف ميزة "محفظة الوصول السريع" من تطبيق "الإعدادات". يمكن الوصول إلى صفحة الإعدادات من خلال الإعدادات > النظام > الإيماءات > البطاقات والتذاكر.
التخصيص
إضافة عرض "الوصول السريع إلى المحفظة" إلى موقع آخر في واجهة مستخدم النظام
تم تصميم واجهة مستخدم
الوصول السريع إلى المحفظة
كأحد مكوّنات النظام الإضافية.
على الرغم من أنّ تنفيذ 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);
}
}
ينفذ
واجهة مستخدم "الوصول السريع إلى المحفظة"
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
في الإصدار 12 من نظام التشغيل Android أو الإصدارات الأحدث، تظهر "محفظة الوصول السريع"
دائمًا في نافذة "الإعدادات السريعة". إنّ ظهور "محفظة" ميزة "الوصول السريع" في شاشة القفل يعتمد على الإعداد الآمن التالي:
LOCKSCREEN_SHOW_WALLET
. يتحكّم هذا الإعداد في ما إذا كان سيتم عرض رمز "محفظة الوصول السريع"
في أسفل يسار شاشة القفل. يتم ضبط هذا الإعداد على
true
تلقائيًا، ولكن يمكن للمستخدم إيقافه من خلال الانتقال إلى الإعدادات >
الشاشة > شاشة القفل > عرض المحفظة.
Android 11
في Android 11، يتم حظر ظهور "محفظة الوصول السريع" من خلال إعدادَين آمنَين:
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
وتصديره ولكنه لا يوفر أي بطاقات، سيظهر المربع في الظل كما هو موضح في المثال في الشكل 7. يؤدي النقر على مربّع التطبيق إلى فتح تطبيق الدفع التلقائي عبر تقنية NFC.الشكل 7: مثال على مربّع في الظل يعرض التطبيق التلقائي للدفع عبر NFC.
يؤدي النقر على شاشة العرض الفارغة كما هو موضح في الشكل 8 إلى فتح التطبيق التلقائي للدفع عبر NFC. ولا يتم عرض هذه الحالة الفارغة إلا عندما يكون لدى المستخدم بطاقة واحدة متبقية في المحفظة، ويزيل البطاقة من صفحة تفاصيل البطاقة، ثم يعود إلى عرض المحفظة.
تعرض شاشة القفل رمز المحفظة.
الشكل 8: عرض الحالة الفارغة في واجهة مستخدم "الوصول السريع إلى المحفظة"
حالة غير صفرية
إذا كان تطبيق المحفظة يقدّم بطاقة واحدة أو أكثر، يظهر المربّع في الظل كما هو موضّح في الشكل 9.
الشكل 9: مثال على مربّع في وضع التظليل عندما يتضمّن تطبيق المحفظة بطاقة واحدة أو أكثر
يؤدي النقر على المربّع إلى عرض لوحة عرض دوّارة للبطاقات.
تعرض شاشة القفل زرًا يفتح "محفظة الوصول السريع".
الشكل 10: واجهة مستخدم "الوصول السريع" في "محفظة Google" مع بطاقة معروضة
إذا كانت البطاقة المعروضة تمثّل طريقة دفع 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
يتطلّب اختبار الميزات الأساسية لمحفظة "الوصول السريع" استخدام محطة دفع تتحكّم في تقنية 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
مفعّلاً وتم تصديره ولكنّه لا يقدّم أي بطاقات، ستعرض واجهة مستخدم "محفظة Google" للوصول السريع عرض الحالة الفارغة. يؤدي النقر على عرض الحالة الفارغة إلى فتح تطبيق المحفظة.
حالة غير صفرية
إذا كان تطبيق المحفظة يقدّم بطاقة واحدة أو أكثر، يتم عرض البطاقات في واجهة مستخدم "محفظة الوصول السريع".
إذا كانت البطاقة المعروضة تمثّل طريقة دفع NFC، يؤدي تثبيت الهاتف أمام محطة دفع NFC إلى استخدام طريقة الدفع هذه وإغلاق عرض المحفظة.
يؤدي النقر على بطاقة معروضة إلى إغلاق عرض المحفظة وفتح النشاط التفصيلي لتلك البطاقة.
إذا قدّمت
QuickAccessWalletService
بطاقات متعددة، يمكن للمستخدم التمرير سريعًا بين البطاقات.تتضمّن القائمة الكاملة إدخالَين: أحدهما يفتح تطبيق "محفظة Google" وآخر يفتح شاشة عرض البطاقات والتذاكر في "الإعدادات".
اختبارات حالة القفل
- إذا كان الهاتف مقفلاً، يتم التحكّم في مستوى ظهور المحفظة من خلال الإعداد
Settings.Secure.POWER_MENU_LOCK_SHOW_CONTENT
، والذي يمكن التحكّم فيه في "الإعدادات". - إذا كان الهاتف مقفلًا وكان الخيار
POWER_MENU_LOCK_SHOW_CONTENT
علىfalse
، لن يتم عرض المحفظة. - إذا كان الهاتف مقفلاً وكانت قيمة
POWER_MENU_LOCK_SHOW_CONTENT
هيtrue
، تظهر المحفظة. - يؤدي فتح قفل الهاتف أثناء عرض المحفظة على شاشة القفل إلى إعادة طلب البطاقات، ما قد يؤدي إلى اختلاف محتوى البطاقة.
اختبارات تسهيل الاستخدام
- يمكن لمستخدمي TalkBack التنقّل في عرض المحفظة من خلال التمرير سريعًا لليسار واليمين والاستماع إلى أوصاف محتوى البطاقات.
- يؤدي التمرير سريعًا لليمين ولليسار مع تفعيل TalkBack إلى اختيار كل بطاقة بالترتيب. يمكن لمستخدمي TalkBack اختيار طريقة دفع NFC واستخدامها في محطة دفع NFC.