أساس تجربة المستخدم لإطار العمل باللمس

تستند جميع التحسينات في إطار عمل Android التي تعتمد على تقنية اللمس إلى مجموعة من مبادئ تجربة المستخدم التي تتطور بوتيرة متساوية. الحالي استبدال الاهتزاز الصاخب بطريقة لمس واضحة، استكشاف تقنية اللمس الغنية.

مبادئ تجربة المستخدم

الشكل 1. المبادئ الحالية

يسرد الجدول التالي جميع واجهات برمجة التطبيقات التي تعمل باللمس المتاحة.

واجهة برمجة التطبيقات الطرق سنة الإضافة
android.view.HapticFeedbackConstants
  • نقرة_السياق
  • ساعة_ساعة
  • المفتاح VIRTUAL_KEY
  • KEYBOARD_TAP
  • الضغط لمدة طويلة
قبل 2016
  • KEYBOARD_PRESS
  • إصدار_لوحة المفاتيح
  • TEXT_HANDLE_MOVE
  • إصدار VIRTUAL_KEY_Release
2017 (Android 8)
  • تأكيد
  • إغلاق
  • GESTURE_START
  • GESTURE_END
2020 (نظام التشغيل Android 11)
android.View
  • تنفيذHapticFeedback()
قبل 2016
android.os.Vibrator
  • الاهتزاز()
  • hasVibrator()
قبل 2016
  • hasAmplitudeControl()
2017 (Android 8)
  • areAllEffectssupported()
  • areAllPrimitivesSupported()
  • areEffectssupported()
  • arePrimitivessupported()
2020 (نظام التشغيل Android 11)
android.os.VibrationEffect
  • createOneShot()
  • createWaveform()
2017 (Android 8)
  • تأثير_الحزمة
  • التأثير_النقر
  • تأثير_HEAVY_النقر
  • تأثير_النقر
  • createPrespecific()
2019 (الإصدار 10 من نظام التشغيل Android)
android.os.VibrationEffect.بالفيديوهات
  • إشارة_رئيسية
  • النقرة المميزة
  • addPrimitive()
  • create()
2020 (نظام التشغيل Android 11)
android.media.AudioAttributes.Builder.
  • setHapticChannelsCutd()
2019 (الإصدار 10 من نظام التشغيل Android)

الاهتزاز عند التفاعل

يعود تاريخها إلى أجهزة النداء والهواتف العادية، وتقنيات ERM منخفضة الجودة وذات الكفاءة في استهلاك الطاقة. تم استخدام الاهتزازات المستندة إلى رنين كبديل للرنين السمعي في الوضع الصامت. مكونات الأجهزة القديمة التي تُنتج بصوت مرتفع ومزعج يمكن للضوضاء المسموعة أن تضر بتجربة المستخدم باللمس من خلال تقديم مرات ظهور منخفضة الجودة ( على سبيل المثال، هاتف رخيص ومُعطل).

تقنية اللمس الواضحة

تدعم تقنية اللمس الواضح الإحساس بالتغيّرات المنفصلة في الحالة (على سبيل المثال، التغييرات الثنائية أثناء عملية تشغيل/إيقاف التشغيل). نظرًا لطبيعة و المنفصلة، يتم إنشاء تقنية اللمس الواضحة ككيان واحد ( على سبيل المثال، تأثير لمس واحد لكل حدث إدخال).

يهدف Android إلى تقديم تقنية لمسية واضحة مع أحاسيس قوية لكنها حادة بدلاً من من الأحاسيس الحماسية أو العاطفية

تشمل الثوابت اللمسية المحددة مسبقًا والتي يتم إنشاؤها لدعم التجاوب الحسّي الواضح ما يلي.

في HapticFeedbackConstants:

  • 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 أو الإصدارات الأقدم.

تقنية Rich Haptics

الشكل 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 إلى السعة المستهدفة. يمكن أن يؤدي الاهتزاز الطويل إلى الانتباه بسهولة تقنية اللمس. ومع ذلك، يمكن أن يفاجئ الاهتزاز الطويل المفاجئ المستخدمين ، وغالبًا ما تُصدر أصوات طنانة مسموعة. لإنشاء مزيد من اهتزاز طويل لطيف، يتم تطبيق تأثير التخفيف في بداية الاهتزاز. وينتج عن ذلك انتقال سلس في المساحة يتجه نحو السعة المستهدفة.

تطبيق تأثير التخفيف

  1. تحقق من إمكانات الأجهزة للتحكم في السعة باستخدام android.os.Vibrator.hasAmplitudeControl()

    • يجب أن تكون النتيجة true لتوفير سهولة الاستخدام مع سعة متفاوتة.
  2. استخدام VibrationEffect.createWaveform(timings[], amplitudes[], int repeat)

  3. اضبط سلسلة timings[] وamplitudes[] لإنشاء منحنى التخفيف، كما هو موضح في الشكل 6.

اهتزاز طويل

الشكل 6. منحنى سهولة الاهتزاز الطويل

حالة الاستخدام 3: تقنية التجاوب الحسي المرتبطة بالصوت

ميزات التجاوب الحسي المقترنة بالصوت هي أنماط حسّية مقترنة بإيقاع الصوت لجذب انتباه المستخدم.

ميزات تقنية التجاوب الحسي بإقران الصوت: المزايا

لتنفيذ تقنية اللمس المقترنة بالاقتران الصوتي، ادمج تقنية اللمس الواضحة مع الاهتزازات الطويلة. تتميّز الأحاسيس الحسية القوية والقصيرة التي تعتمد على تقنية اللمس الواضحة الأنماط الإيقاعية. عند دمجه مع المستويات العالية من المحفزات التي تستغرق يوفرها الاهتزاز، فهذا يقوم بعمل رائع في جذب انتباه المستخدم.

ومن المهم مراعاة الأنماط الإيقاعية للإحساس. إذا لم تكن هناك معنى الإيقاع، يدرك المستخدم الأحاسيس الملموسة على أنها اهتزازات عشوائية ويميل لتجاهلها.

زوج من الصوت

الشكل 7. مثال على استخدام تقنية اللمس لزوجين صوتيين

ميزات التجاوب الصوتي المقترنة بالاقتران مع الصوت: نصائح للتنفيذ

يتطلب تنفيذ تقنية اللمس المقترنة بالاقتران السمعي فهمًا أساسيًا للمحتوى تشغيل كل من القنوات الصوتية وقنوات اللمس. ضع الأمور التالية في اعتبارك.

  • استخدام MediaPlayer أو SoundPool الصفوف.

    • مواد عرض بتنسيق OGG مع مفتاح بيانات وصفية خاص تشير السمة ANDROID_HAPTIC متبوعة بعدد من القنوات التي تعمل باللمس) إلى توفُّر بيانات التجاوب الحسي والتشغيل باستخدام "MediaPlayer" و"SoundPool".
  • الإشارة إلى دعم تقنية اللمس وتشغيل الصوت في 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) في الاهتزاز دعم التحكم الخارجي.

تقنية التجاوب الحسي المقترنة بالصوت

الشكل 8. تنفيذ تقنية اللمس بالاقتران السمعي

تقنية اللمس المقترِنة بالصوت: مولّد اللمس

HapticGenerator هو تأثير صوتي التي تم إدخالها في Android 12 والتي يمكنها إنشاء بيانات ملموسة من قناة صوتية وتشغّلها في الوقت الفعلي كأجهزة تعمل باللمس تقترن بالصوت. يتم تطبيق التأثير على AudioTrack كما هو موضح في الشكل 9.

بنية المولّد اللمسي

الشكل 9. بنية المولّد اللمسي

للتأكد من أن خوارزمية المولّد الحسّي لديك ينتج عنها أجهزة لمس عالية الجودة، ضبط خوارزمية الإنشاء على محرك الهزّاز بالجهاز من خلال ضبط المعلَمات التي تهيئ سلسلة الفلاتر التي يتم تطبيقها على الأشكال الموجية الصوتية. يصف هذا القسم هذه المَعلمات بالتفصيل ويوضّح كيفية ضبطها. بمواصفات أجهزتك.

  1. تردد رنان لفلتر تمرير النطاق

    تردد رنان الهزّاز هو التردد الذي يسلكه المشغِّل باللمس يمتلك الحد الأقصى للمخرجات. وتضبط هذه المعلمة مضاعِف اهتزازًا جزئيًا تنظيم وظيفة نقل الاستجابة، للحصول على نطاق ترددي أوسع. يربط إطار عمل Android تلقائيًا هذه القيمة بمخرجات طريقة Vibrator HAL IVibrator.getResonantFrequency.

    القيمة التلقائية لهذه المَعلمة هي 150 هرتز. يمكن تعديل ذلك في هنا.

  2. طاقة التسوية للغلاف البطيء

    تحدد هذه المعلمة الأس في التسوية الجزئية (التحكّم التلقائي في الصوت). وقيمتها التلقائية -0.8، ما يعني أنّ تمت إزالة 80% من تنوع النطاق الديناميكي من خلال خطوة التحكم في الاكتساب هذه. ويمكن تعديل هذا الخيار في الرمز هنا.

  3. عامل Q لفلتر نقطة الإيقاف

    يتم تحديد عامل جودة الهزّاز (عامل Q) من خلال مَعلمتَين:

    • يشير ذلك المصطلح إلى Zero Q، وهو عامل جودة الأصفار في فلتر نقطة الإيقاف النهائي. لإلغاء الرنين جزئيًا.

    • Pole Q، عامل جودة الأعمدة في عامل تصفية النطاق.

    وتحد نسبة هاتين القيمتين من قمع الرنين بالترتيب لتعزيز الترددات المنخفضة وتوسيع استجابة الخوارزمية. على سبيل المثال: القيم التلقائية 8 للقيم الصفري Q و4 لناتج القطب Q بنسبة 2، يحد من قمع الرنين بعامل 2 (6 ديسيبل). يربط إطار عمل Android كلتا القيمتين بإخراج جهاز Vibrator HAL. الطريقة IVibrator.getQFactor.

    إذا كانت القيم التلقائية لا تأخذ في الاعتبار تخميد قوة الحركة في جهازك، ننصحك بتعديل القيمتَين معًا في الوقت نفسه إما زيادة كليهما أو تقليلهما. نسبة صفر Q إلى قطب Q يجب أن يكون أكبر من 1. ويمكن تعديل هذا الخيار في الرمز هنا.

  4. تردد الزاوية للتشوّه

    يتم تطبيق تردد الزاوية من خلال فلتر تمرير منخفض يعتمِد الاهتزاز المنخفض المستوى ويعزز المستويات الأعلى باستخدام التشوّه المكعب. القيمة التلقائية هي 300 هرتز. ويمكن تعديل هذا الخيار في الرمز هنا.

  5. زيادة الإدخال والحدّ الأدنى المكعّب للتشوّه

    ويتم استخدام هذه المعاملات من خلال فلتر تشوّه غير خطي يطبّق على شكل موجي يُضعِف اتساع إشارات الترددات المنخفضة إلى زيادة معدّل التكرار

    • القيمة التلقائية لعامل اكتساب الإدخال هي 0.3.
    • القيمة التلقائية لحدّ المكعّب هي 0.1.

    ننصحك بتعديل القيمتَين معًا. يمكنك العثور عليها في الرمز هنا.

    لمزيد من المعلومات عن الدالة التي يطبّقها هذا الفلتر، يمكنك الرجوع إلى إمكانية التنفيذ متاحة هنا. ولمعرفة المزيد حول كيفية تأثير هاتين المعلمتين على الناتج، ننصح بالتخطيط لردود تكرار الفلاتر وملاحظة مدى تتغير استجابات التكرار بقيم معلمات مختلفة.

  6. زيادة الإخراج بسبب التشوّه

    وتتحكم هذه المعلمة في سعة الاهتزاز النهائية. إنه مكسب نهائي يتم تطبيقه بعد محدد خفيف يحد من سعات الاهتزاز إلى أقل من 1. قيمتها التلقائية هي 1.5، ويمكن تعديلها في الرمز. هنا إذا كان الاهتزاز خفيفًا جدًا، قم بزيادة القيمة. إذا كنت تستطيع سماع صوت صرير أجهزة المُشغِّل، يُرجى تقليل القيمة.