تستند جميع التحسينات في إطار عمل Android التي تعتمد على تقنية اللمس إلى مجموعة من مبادئ تجربة المستخدم التي تتطور بوتيرة متساوية. الحالي استبدال الاهتزاز الصاخب بطريقة لمس واضحة، استكشاف تقنية اللمس الغنية.
الشكل 1. المبادئ الحالية
يسرد الجدول التالي جميع واجهات برمجة التطبيقات التي تعمل باللمس المتاحة.
واجهة برمجة التطبيقات | الطرق | سنة الإضافة |
---|---|---|
android.view.HapticFeedbackConstants |
|
قبل 2016 |
|
2017 (Android 8) | |
|
2020 (نظام التشغيل Android 11) | |
android.View |
|
قبل 2016 |
android.os.Vibrator |
|
قبل 2016 |
|
2017 (Android 8) | |
|
2020 (نظام التشغيل Android 11) | |
android.os.VibrationEffect |
|
2017 (Android 8) |
|
2019 (الإصدار 10 من نظام التشغيل Android) | |
android.os.VibrationEffect.بالفيديوهات |
|
2020 (نظام التشغيل Android 11) |
android.media.AudioAttributes.Builder. |
|
2019 (الإصدار 10 من نظام التشغيل Android) |
الاهتزاز عند التفاعل
يعود تاريخها إلى أجهزة النداء والهواتف العادية، وتقنيات ERM منخفضة الجودة وذات الكفاءة في استهلاك الطاقة. تم استخدام الاهتزازات المستندة إلى رنين كبديل للرنين السمعي في الوضع الصامت. مكونات الأجهزة القديمة التي تُنتج بصوت مرتفع ومزعج يمكن للضوضاء المسموعة أن تضر بتجربة المستخدم باللمس من خلال تقديم مرات ظهور منخفضة الجودة ( على سبيل المثال، هاتف رخيص ومُعطل).
تقنية اللمس الواضحة
تدعم تقنية اللمس الواضح الإحساس بالتغيّرات المنفصلة في الحالة (على سبيل المثال، التغييرات الثنائية أثناء عملية تشغيل/إيقاف التشغيل). نظرًا لطبيعة و المنفصلة، يتم إنشاء تقنية اللمس الواضحة ككيان واحد ( على سبيل المثال، تأثير لمس واحد لكل حدث إدخال).
يهدف Android إلى تقديم تقنية لمسية واضحة مع أحاسيس قوية لكنها حادة بدلاً من من الأحاسيس الحماسية أو العاطفية
تشمل الثوابت اللمسية المحددة مسبقًا والتي يتم إنشاؤها لدعم التجاوب الحسّي الواضح ما يلي.
CLOCK_TICK
CONFIRM
CONTEXT_CLICK
GESTURE_END
GESTURE_START
KEYBOARD_PRESS
KEYBOARD_RELEASE
KEYBOARD_TAP
LONG_PRESS
REJECT
TEXT_HANDLE_MOVE
VIRTUAL_KEY
VIRTUAL_KEY_RELEASE
في
VibrationEffect
:
EFFECT_CLICK
EFFECT_DOUBLE_CLICK
EFFECT_HEAVY_CLICK
EFFECT_TICK
يعد بناء المعرفة المشتركة بين الشركات المصنعة للأجهزة والمطورين أمرًا أساسيًا يرفع من مستوى الجودة الإجمالية تقنية اللمس في منظومة Android المتكاملة. يمكنك استخدام قائمة التحقق الأساسية تقييم الأجهزة وCDD لمعرفة المزيد عن التنفيذ باللمس.
الشكل 3. الضغط والإفلات.
تقنية التجاوب الغني مع تقنية اللمس
إنّ فئة الحاسة الحسّية هي فئة متزايدة من ميزات تقنية اللمس، وتتجاوز حدود العزوف. التأثيرات القائمة على الدوافع. يهدف Android إلى دعم تقنية اللمس التفاعلية المتقدّمة من خلال وقابلية التركيب والتعديل بمستوى دقيق من الدقة. ما يلي: تتوفّر حالات الاستخدام في الإصدار 11 من نظام التشغيل Android أو الإصدارات الأقدم.
الشكل 4. أجهزة لمس تفاعلية بزخرفة منزلقة
الشكل 5. السحب والتمرير السريع
حالة الاستخدام 1: تمرير الزخرفة
إذا تكرر تأثير اللمس أثناء تمرير الإصبع على سطح اللمس ( مثل السحب والتمرير السريع واستكشاف السطح بزخرفة اللمسات الوهمية) فإن المؤثرات اللمسية المتكررة يُفضل أن تكون واضحة وخفية.
إذا كان التأثير الفردي صاخبًا وليس واضحًا، تكون الفواصل الزمنية بين فمن المحتمل أن يتم مسح التكرارات. تكون النتيجة ضجة واحدة طويلة، بدلاً من من الإشارات المتعددة المنفصلة.
إذا لم تكن السعة خفية بالقدر الكافي، تتراكم الطاقة الحسّية الملموسة من خلال التكرار، مما نتج عنه تقنية لمس قوية للغاية في نهاية التكرار.
تنفيذ زخرفة ملموسة بسيطة على سطح إيماءات التمرير السريع والسحب
استخدام CLOCK_TICK
وTEXT_HANDLE_MOVE
بوصة
HapticFeedbackConstants
تحدد هذه الثوابت خصائص التكرار والاتساع بشكل مسبق.
إنشاء التأثير الخاص بك
إذا أردت الحصول على تأثير خاص بك، يمكنك إنشاء تصميم عن طريق تجميع تسلسلات معًا.
من PRIMITIVE_CLICK
وPRIMITIVE_TICK
في
VibrationEffect.Composition
يمكنك ضبط خصائص مقياس التكرار والاتساع
باستخدام addPrimitive(int primitiveID, float scale, int delay)
. يعتمد الدعم على
الـ
CAP_COMPOSE_EFFECTS
إمكانات
واجهة Vibrator HAL.
حالة الاستخدام 2: الاهتزاز الطويل مع سهولة الاستخدام
الاهتزاز الطويل هو اهتزاز سلس شديد الدقة ينتقل من 0 إلى السعة المستهدفة. يمكن أن يؤدي الاهتزاز الطويل إلى الانتباه بسهولة تقنية اللمس. ومع ذلك، يمكن أن يفاجئ الاهتزاز الطويل المفاجئ المستخدمين ، وغالبًا ما تُصدر أصوات طنانة مسموعة. لإنشاء مزيد من اهتزاز طويل لطيف، يتم تطبيق تأثير التخفيف في بداية الاهتزاز. وينتج عن ذلك انتقال سلس في المساحة يتجه نحو السعة المستهدفة.
تطبيق تأثير التخفيف
تحقق من إمكانات الأجهزة للتحكم في السعة باستخدام
android.os.Vibrator.hasAmplitudeControl()
- يجب أن تكون النتيجة
true
لتوفير سهولة الاستخدام مع سعة متفاوتة.
- يجب أن تكون النتيجة
استخدام
VibrationEffect
.createWaveform(timings[], amplitudes[], int repeat)
اضبط سلسلة
timings[]
وamplitudes[]
لإنشاء منحنى التخفيف، كما هو موضح في الشكل 6.
الشكل 6. منحنى سهولة الاهتزاز الطويل
حالة الاستخدام 3: تقنية التجاوب الحسي المرتبطة بالصوت
ميزات التجاوب الحسي المقترنة بالصوت هي أنماط حسّية مقترنة بإيقاع الصوت لجذب انتباه المستخدم.
ميزات تقنية التجاوب الحسي بإقران الصوت: المزايا
لتنفيذ تقنية اللمس المقترنة بالاقتران الصوتي، ادمج تقنية اللمس الواضحة مع الاهتزازات الطويلة. تتميّز الأحاسيس الحسية القوية والقصيرة التي تعتمد على تقنية اللمس الواضحة الأنماط الإيقاعية. عند دمجه مع المستويات العالية من المحفزات التي تستغرق يوفرها الاهتزاز، فهذا يقوم بعمل رائع في جذب انتباه المستخدم.
ومن المهم مراعاة الأنماط الإيقاعية للإحساس. إذا لم تكن هناك معنى الإيقاع، يدرك المستخدم الأحاسيس الملموسة على أنها اهتزازات عشوائية ويميل لتجاهلها.
الشكل 7. مثال على استخدام تقنية اللمس لزوجين صوتيين
ميزات التجاوب الصوتي المقترنة بالاقتران مع الصوت: نصائح للتنفيذ
يتطلب تنفيذ تقنية اللمس المقترنة بالاقتران السمعي فهمًا أساسيًا للمحتوى تشغيل كل من القنوات الصوتية وقنوات اللمس. ضع الأمور التالية في اعتبارك.
استخدام
MediaPlayer
أوSoundPool
الصفوف.- مواد عرض بتنسيق OGG مع مفتاح بيانات وصفية خاص
تشير السمة
ANDROID_HAPTIC
متبوعة بعدد من القنوات التي تعمل باللمس) إلى توفُّر بيانات التجاوب الحسي والتشغيل باستخدام "MediaPlayer
" و"SoundPool
".
- مواد عرض بتنسيق OGG مع مفتاح بيانات وصفية خاص
تشير السمة
الإشارة إلى دعم تقنية اللمس وتشغيل الصوت في
audio_policy_configuration.xml
- استخدام ملف شخصي للمخرجات مع قناة اللمس
AUDIO_CHANNEL_OUT_HAPTIC_A|B
- عند الحصول على مصدر إخراج يتضمن قنوات تعمل باللمس، تذكَّر أن تقنية اللمس يتم عرض القنوات كقنوات إضافية في البيانات.
مثال
إذا كان قناع القناة للبث المباشر يظهر على النحو التالي:
AUDIO_CHANNEL_OUT_STEREO_HAPTIC_A
ثم يجب أن تبدو كل عينة على النحو التالي:
AUDIO_LEFT_CHANNEL,AUDIO_RIGHT_CHANNEL,HAPTIC_CHANNEL_A
- استخدام ملف شخصي للمخرجات مع قناة اللمس
تغيير
AudioAttributes.Builder( ).setHapticChannelsMuted(boolean muted)
إلىfalse
لتشغيل قناة اللمس.- بشكل تلقائي، يتم كتم صوت القنوات التي تعمل باللمس (
true
). - تشمل حالات الاستخدام نغمات رنين وأصوات واجهة المستخدم مع نغمات متزامنة تقنية اللمس والملاحظات.
- بشكل تلقائي، يتم كتم صوت القنوات التي تعمل باللمس (
يجب أن تنفذ طبقة تجريد الأجهزة (HAL) في الاهتزاز دعم التحكم الخارجي.
- بالنسبة إلى عمليات تنفيذ HIDL، استخدِم
setExternalControl(bool enabled) generates (Status status)
- بالنسبة إلى عمليات تنفيذ AIDL، استخدِم
void setExternalControl(in boolean enabled)
- بالنسبة إلى عمليات تنفيذ HIDL، استخدِم
الشكل 8. تنفيذ تقنية اللمس بالاقتران السمعي
تقنية اللمس المقترِنة بالصوت: مولّد اللمس
HapticGenerator
هو تأثير صوتي
التي تم إدخالها في Android 12 والتي يمكنها إنشاء بيانات ملموسة من قناة صوتية
وتشغّلها في الوقت الفعلي كأجهزة تعمل باللمس تقترن بالصوت.
يتم تطبيق التأثير على AudioTrack
كما هو موضح في الشكل 9.
الشكل 9. بنية المولّد اللمسي
للتأكد من أن خوارزمية المولّد الحسّي لديك ينتج عنها أجهزة لمس عالية الجودة، ضبط خوارزمية الإنشاء على محرك الهزّاز بالجهاز من خلال ضبط المعلَمات التي تهيئ سلسلة الفلاتر التي يتم تطبيقها على الأشكال الموجية الصوتية. يصف هذا القسم هذه المَعلمات بالتفصيل ويوضّح كيفية ضبطها. بمواصفات أجهزتك.
تردد رنان لفلتر تمرير النطاق
تردد رنان الهزّاز هو التردد الذي يسلكه المشغِّل باللمس يمتلك الحد الأقصى للمخرجات. وتضبط هذه المعلمة مضاعِف اهتزازًا جزئيًا تنظيم وظيفة نقل الاستجابة، للحصول على نطاق ترددي أوسع. يربط إطار عمل Android تلقائيًا هذه القيمة بمخرجات طريقة Vibrator HAL
IVibrator.getResonantFrequency
.القيمة التلقائية لهذه المَعلمة هي 150 هرتز. يمكن تعديل ذلك في هنا.
طاقة التسوية للغلاف البطيء
تحدد هذه المعلمة الأس في التسوية الجزئية (التحكّم التلقائي في الصوت). وقيمتها التلقائية -0.8، ما يعني أنّ تمت إزالة 80% من تنوع النطاق الديناميكي من خلال خطوة التحكم في الاكتساب هذه. ويمكن تعديل هذا الخيار في الرمز هنا.
عامل Q لفلتر نقطة الإيقاف
يتم تحديد عامل جودة الهزّاز (عامل Q) من خلال مَعلمتَين:
يشير ذلك المصطلح إلى Zero Q، وهو عامل جودة الأصفار في فلتر نقطة الإيقاف النهائي. لإلغاء الرنين جزئيًا.
Pole Q، عامل جودة الأعمدة في عامل تصفية النطاق.
وتحد نسبة هاتين القيمتين من قمع الرنين بالترتيب لتعزيز الترددات المنخفضة وتوسيع استجابة الخوارزمية. على سبيل المثال: القيم التلقائية 8 للقيم الصفري Q و4 لناتج القطب Q بنسبة 2، يحد من قمع الرنين بعامل 2 (6 ديسيبل). يربط إطار عمل Android كلتا القيمتين بإخراج جهاز Vibrator HAL. الطريقة
IVibrator.getQFactor
.إذا كانت القيم التلقائية لا تأخذ في الاعتبار تخميد قوة الحركة في جهازك، ننصحك بتعديل القيمتَين معًا في الوقت نفسه إما زيادة كليهما أو تقليلهما. نسبة صفر Q إلى قطب Q يجب أن يكون أكبر من 1. ويمكن تعديل هذا الخيار في الرمز هنا.
تردد الزاوية للتشوّه
يتم تطبيق تردد الزاوية من خلال فلتر تمرير منخفض يعتمِد الاهتزاز المنخفض المستوى ويعزز المستويات الأعلى باستخدام التشوّه المكعب. القيمة التلقائية هي 300 هرتز. ويمكن تعديل هذا الخيار في الرمز هنا.
زيادة الإدخال والحدّ الأدنى المكعّب للتشوّه
ويتم استخدام هذه المعاملات من خلال فلتر تشوّه غير خطي يطبّق على شكل موجي يُضعِف اتساع إشارات الترددات المنخفضة إلى زيادة معدّل التكرار
- القيمة التلقائية لعامل اكتساب الإدخال هي 0.3.
- القيمة التلقائية لحدّ المكعّب هي 0.1.
ننصحك بتعديل القيمتَين معًا. يمكنك العثور عليها في الرمز هنا.
لمزيد من المعلومات عن الدالة التي يطبّقها هذا الفلتر، يمكنك الرجوع إلى إمكانية التنفيذ متاحة هنا. ولمعرفة المزيد حول كيفية تأثير هاتين المعلمتين على الناتج، ننصح بالتخطيط لردود تكرار الفلاتر وملاحظة مدى تتغير استجابات التكرار بقيم معلمات مختلفة.
زيادة الإخراج بسبب التشوّه
وتتحكم هذه المعلمة في سعة الاهتزاز النهائية. إنه مكسب نهائي يتم تطبيقه بعد محدد خفيف يحد من سعات الاهتزاز إلى أقل من 1. قيمتها التلقائية هي 1.5، ويمكن تعديلها في الرمز. هنا إذا كان الاهتزاز خفيفًا جدًا، قم بزيادة القيمة. إذا كنت تستطيع سماع صوت صرير أجهزة المُشغِّل، يُرجى تقليل القيمة.