ใช้การโต้ตอบการสัมผัส

โดยทั่วไปแล้ว ผู้ผลิตอุปกรณ์จะถือเป็นเจ้าของเนื้อหาส่วนตัวที่สร้างขึ้นสำหรับอุปกรณ์แต่ละเครื่อง ด้วยเหตุนี้ ความพยายามด้านวิศวกรรมจึงมักมุ่งเน้นไปที่อุปกรณ์แต่ละเครื่อง โดยให้ความสำคัญกับอุปกรณ์อื่นๆ ในระบบนิเวศน้อยมากหรือไม่ให้ความสำคัญเลย

ในทางตรงกันข้าม นักพัฒนาแอปพยายามสร้างแอปที่ใช้งานได้ในทุกโทรศัพท์ Android ในระบบนิเวศ โดยไม่คำนึงถึงข้อกำหนดทางเทคนิคของแต่ละอุปกรณ์ ความแตกต่างของแนวทางนี้อาจทำให้เกิดปัญหาการแยกส่วน เช่น ความสามารถของฮาร์ดแวร์ของโทรศัพท์บางรุ่นไม่ตรงกับที่นักพัฒนาแอปคาดหวัง ดังนั้น หาก API ของการสัมผัสทำงานในโทรศัพท์ Android บางรุ่นแต่ไม่ทำงานในบางรุ่น ระบบนิเวศก็จะไม่สอดคล้องกัน ด้วยเหตุนี้ การกําหนดค่าฮาร์ดแวร์จึงมีบทบาทสําคัญในการช่วยให้ผู้ผลิตสามารถใช้ Androidhaptics API ในอุปกรณ์ทุกเครื่อง

หน้านี้มีรายการตรวจสอบแบบทีละขั้นตอนเพื่อตั้งค่าการปฏิบัติตามข้อกำหนดของฮาร์ดแวร์เพื่อให้ใช้ Android Haptics API ได้อย่างมีประสิทธิภาพสูงสุด

รูปภาพต่อไปนี้แสดงการสร้างความรู้ทั่วไประหว่างผู้ผลิตอุปกรณ์และนักพัฒนาแอป ซึ่งเป็นขั้นตอนสําคัญในการสร้างระบบนิเวศที่เหนียวแน่น

แผนภาพกรณีการใช้งานของรีแอ็กชันการสัมผัสสำหรับนักพัฒนาแอปและผู้ผลิตอุปกรณ์

รูปที่ 1 การสร้างความรู้ระหว่างผู้ผลิตอุปกรณ์และนักพัฒนาแอป

รายการตรวจสอบการใช้งานการโต้ตอบการสัมผัส

  1. ใช้ค่าคงที่

    • รายการค่าคงที่เพื่อใช้การสัมผัส
  2. ใช้องค์ประกอบพื้นฐาน

    • คำแนะนำการใช้งานองค์ประกอบพื้นฐานของ HAL
  3. แมปค่าคงที่ระหว่าง HAL กับ API

  4. ประเมินฮาร์ดแวร์

    • วิธีการเกี่ยวกับเอฟเฟกต์การสัมผัสที่กำหนดเป้าหมาย ใช้วิธีการเหล่านี้เพื่อตรวจสอบฮาร์ดแวร์อย่างรวดเร็ว

เราจะเจาะลึกรายละเอียดเพิ่มเติมสำหรับขั้นตอนเหล่านี้แต่ละขั้นตอนด้านล่าง

ขั้นตอนที่ 1: ใช้ค่าคงที่

ตรวจสอบสิ่งต่อไปนี้เพื่อดูว่าอุปกรณ์เป็นไปตามข้อกำหนดขั้นต่ำในการใช้การสัมผัสหรือไม่

โฟลว์ชาร์ตของกระบวนการติดตั้งใช้งานการสัมผัส

รูปที่ 2 การใช้เอฟเฟกต์

โฟลว์ชาร์ตขั้นตอนการติดตั้งใช้งานพรอมิเทีฟ

รูปที่ 3 การใช้องค์ประกอบพื้นฐาน

ตรวจสอบสถานะการติดตั้งใช้งานของค่าคงที่ของการสัมผัสต่อไปนี้

ค่าคงที่ของการโต้ตอบการสัมผัส สถานที่ตั้งและข้อมูลสรุป
EFFECT_TICK, EFFECT_CLICK, EFFECT_HEAVY_CLICK, EFFECT_DOUBLE_CLICK VibrationEffect class
ค่าคงที่ของการสัมผัสใน VibrationEffect จะไม่มีแนวคิดเกี่ยวกับเหตุการณ์อินพุตและไม่มีองค์ประกอบ UI ค่าคงที่จะมีแนวคิดเกี่ยวกับระดับพลังงานแทน เช่น EFFECT_CLICK และ EFFECT_HEAVY_CLICK ซึ่งเรียกโดย createPredefined()

การสั่นทางเลือกที่อธิบายไว้ด้านล่างจะทำงานในอุปกรณ์ที่ไม่ได้ใช้ค่าคงที่ VibrationEffect เราขอแนะนำให้อัปเดตการกำหนดค่าเหล่านี้เพื่อให้ทำงานได้ดีที่สุดบนอุปกรณ์ดังกล่าว

  • EFFECT_CLICK

    การสั่นรูปแบบคลื่นที่สร้างด้วย VibrationEffect.createWaveform และการกำหนดเวลาที่กำหนดค่าไว้ที่ frameworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern

  • EFFECT_HEAVY_CLICK

    การสั่นรูปแบบคลื่นที่สร้างด้วย VibrationEffect.createWaveform และการกำหนดเวลาที่กำหนดค่าไว้ที่ frameworks/base/core/res/res/values/config.xml##config_longPressVibePattern

    • EFFECT_DOUBLE_CLICK

    การสั่นรูปแบบคลื่นที่สร้างด้วย VibrationEffect.createWaveform และช่วงเวลา (0, 30, 100, 30)

  • EFFECT_TICK

    การสั่นรูปแบบคลื่นที่สร้างด้วย VibrationEffect.createWaveform และการกำหนดเวลาที่กำหนดค่าไว้ที่ frameworks/base/core/res/res/values/config.xml##config_clockTickVibePattern

แผนภาพขั้นตอนสำหรับการทดสอบการตอบสนองแบบสัมผัส

รูปที่ 4 การใช้ค่าคงที่ของความคิดเห็น

ตรวจสอบสถานะของค่าคงที่ของความคิดเห็นสาธารณะต่อไปนี้

ค่าคงที่ของการโต้ตอบการสัมผัส สถานที่ตั้งและข้อมูลสรุป
CLOCK_TICK, CONTEXT_CLICK, KEYBOARD_PRESS, KEYBOARD_RELEASE, KEYBOARD_TAP, LONG_PRESS, TEXT_HANDLE_MOVE, VIRTUAL_KEY, VIRTUAL_KEY_RELEASE, CONFIRM, REJECT, GESTURE_START, GESTURE_END คลาส HapticFeedbackConstants
ค่าคงที่ของการสัมผัสใน HapticFeedbackConstantsช่วยเหตุการณ์อินพุตด้วยองค์ประกอบ UI บางรายการ เช่น KEYBOARD_PRESS และ KEYBOARD_RELEASE ซึ่งเรียกโดย performHapticFeedback()

ขั้นตอนที่ 2: ติดตั้งใช้งานองค์ประกอบพื้นฐาน

รูปแบบการสัมผัสพื้นฐานใน VibrationEffect.Composition มีความเข้มที่ปรับขนาดได้ซึ่งนักพัฒนาแอปสามารถใช้ผ่าน addPrimitive(int primitiveId, float scale, int delay) รูปแบบพื้นฐานแบ่งออกเป็น 2 หมวดหมู่ ได้แก่

  • พรอมิตีฟสั้น: พรอมิตีฟที่มีระยะเวลาสั้น โดยทั่วไปน้อยกว่า 20 มิลลิวินาที ได้แก่ CLICK, TICK และ LOW_TICK

  • พรอมิเตอแบบ Chirp: พรอมิเตอที่มีความกว้างและความถี่แตกต่างกัน โดยปกติแล้วจะมีระยะเวลานานกว่าพรอมิเตอแบบสั้น นั่นคือ SLOW_RISE, QUICK_RISE, QUCK_FALL, THUD และ SPIN

พรอมต์แบบสั้น

พรีมิทีฟแบบสั้นจะอธิบายได้ด้วยโปรไฟล์ความเร่งเอาต์พุตของมอเตอร์สั่น ความถี่สัมบูรณ์ที่ใช้จะแตกต่างกันไปสำหรับแต่ละรายการพื้นฐาน โดยขึ้นอยู่กับความถี่เรโซแนนซ์ของตัวกระตุ้น ดูข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าฮาร์ดแวร์และเครื่องมือวัดผลเอาต์พุตได้ที่หัวข้อตั้งค่าอุปกรณ์ทดสอบ

เมตริกคุณภาพที่มีประโยชน์สำหรับการสั่นสั้นๆ คืออัตราส่วนของพัลส์ต่อเสียงเรียกเข้า (PRR) ดังที่แสดงในรูปที่ 5 PRR หมายถึงอัตราส่วนระหว่างพัลส์หลัก ซึ่งกำหนดโดยสัญญาณภายในกรอบเวลาของระยะเวลาที่แอมพลิจูดลดลงเป็น 10% ของแอมพลิจูดสูงสุด และพัลส์วงแหวน ซึ่งกำหนดโดยสัญญาณที่แอมพลิจูดลดลงจาก 10% ของแอมพลิจูดสูงสุดเป็นน้อยกว่า 1% ของแอมพลิจูดสูงสุด ดูข้อมูลเพิ่มเติมเกี่ยวกับ PRR ได้ที่หัวข้อวิเคราะห์รูปแบบคลื่น และดูข้อมูลเพิ่มเติมเกี่ยวกับการวิเคราะห์และเปรียบเทียบผลลัพธ์ได้ที่หัวข้อเปรียบเทียบผลลัพธ์โดยใช้แผนที่ประสิทธิภาพ

อัตราส่วนชีพจรต่อเสียงกริ่ง

รูปที่ 5 คําจํากัดความของอัตราส่วนพัลส์ต่อเสียงเรียกเข้า

ใช้รูปเรขาคณิตพื้นฐานแบบสั้นเป็นเสียงป้อนกลับของผู้ใช้หรือเล่นในคอมโพสิชันที่ยาวขึ้นเพื่อสร้างพื้นผิวที่นุ่มนวล ซึ่งหมายความว่าโฆษณามักจะทริกเกอร์บ่อยครั้งและเล่นต่อกันอย่างรวดเร็ว ความเข้มที่รับรู้ขององค์ประกอบพื้นฐานสั้นๆ รายการเดียวอาจทำให้ความเข้มของเอฟเฟกต์ที่ใหญ่ขึ้นมีความรุนแรงมากขึ้น ด้วยเหตุนี้ ให้ปรับเทียบเครื่องหมายเดียวหรือเครื่องหมายพื้นฐานที่มีความละเอียดต่ำด้วยองค์ประกอบที่ใหญ่ขึ้น เช่น เครื่องหมาย 100 เครื่องหมายติดต่อกัน

คลิกพรอมต์

พรอมต์การคลิกเป็นเอฟเฟกต์ที่คมชัดและแรง ซึ่งมักจะทำงานใกล้กับความถี่เรโซแนนซ์ของอุปกรณ์เพื่อให้ได้เอาต์พุตสูงสุดในระยะเวลาสั้นๆ เสียงจะหนักแน่นและลึกกว่าเสียงพื้นฐานอื่นๆ โดยทำงานที่ระดับความเข้มข้นสูงสุด

ใช้มอเตอร์โอเวอร์ไดรฟ์ในช่วงเริ่มต้นและการเบรกแบบแอ็กทีฟในช่วงท้าย (หากมี) เพื่อให้มอเตอร์ทำงานขึ้นและลงได้อย่างรวดเร็ว สำหรับมอเตอร์บางรุ่น การใช้คลื่นสี่เหลี่ยมแทนคลื่นไซน์จะช่วยให้เร่งความเร็วได้เร็วขึ้น รูปที่ 6 แสดงตัวอย่างโปรไฟล์การเร่งความเร็วเอาต์พุตสำหรับ Primitive การคลิก

คลิกโปรไฟล์การเร่งความเร็วเอาต์พุตแบบ Primitive

รูปที่ 6 ตัวอย่างโปรไฟล์การเร่งความเร็วเอาต์พุตสําหรับ Primitive การคลิก

พารามิเตอร์ คำแนะนำ
ระยะเวลา

เป้าหมาย: 12 มิลลิวินาที

ขีดจํากัด: < 30 มิลลิวินาที

การเร่งความเร็วเอาต์พุตสูงสุด

เป้าหมาย: 2 G

ขีดจำกัด: มากกว่า 1 G

ความถี่ ประมาณที่ความถี่เรโซแนนซ์

องค์ประกอบเครื่องหมายถูก (เครื่องหมายถูกแบบเบา)

องค์ประกอบเสียงกริ๊กเป็นเสียงแหลมสั้นๆ ที่มักจะทำงานในช่วงความถี่ที่สูงขึ้น รูปแบบพื้นฐานนี้ยังอธิบายได้ว่าเป็นคลิกที่มีความถี่ปานกลางและมีความถี่ต่ำ คำแนะนำเดียวกันนี้ใช้ได้ผลสำหรับการสร้างเวลาเพิ่มขึ้นสั้นๆ โดยใช้มอเตอร์โอเวอร์ไดรฟ์หรือคลื่นสี่เหลี่ยมผืนผ้าสำหรับการเริ่มต้นครั้งแรก และการเบรกแบบแอ็กทีฟที่จุดเริ่มต้น รูปที่ 7 แสดงตัวอย่างโปรไฟล์การเร่งความเร็วเอาต์พุตสำหรับพรอมต์การนับ

เลือกโปรไฟล์การเร่งความเร็วเอาต์พุต Primitive

รูปที่ 7 ตัวอย่างโปรไฟล์การเร่งความเร็วเอาต์พุตสำหรับพรอมต์การนับ

พารามิเตอร์ คำแนะนำ
ระยะเวลา

เป้าหมาย: 5 มิลลิวินาที

ขีดจํากัด: < 20 ms

การเร่งความเร็วเอาต์พุตสูงสุด

เป้าหมาย: ครึ่งหนึ่งของ CLICK, 1 G

ขีดจํากัด: ระหว่าง 0.5 G ถึง 1 G

ความถี่

เป้าหมาย: ความถี่ที่ทำให้เกิดเสียงสะท้อน 2 เท่า

ขีดจํากัด: < 500 Hz

รูปแบบเครื่องหมายจุดแสดงตำแหน่งต่ำ

Primitive ของเสียงขีดล่างเป็นเสียงขีดบนเวอร์ชันที่นุ่มนวลและเบากว่า ซึ่งทำงานในช่วงความถี่ที่ต่ำลงเพื่อให้เอฟเฟกต์มีความชัดเจนมากขึ้น รายการพื้นฐานนี้ยังอธิบายได้ว่าเป็นคลิกที่มีความถี่ปานกลางแต่มีความรุนแรงต่ำ โดยมีจุดประสงค์เพื่อใช้ซ้ำๆ เพื่อรับความคิดเห็นแบบไดนามิก คำแนะนำเดียวกันนี้ใช้ได้ผลในการทำให้เวลาในการเพิ่มขึ้นสั้นลงโดยใช้มอเตอร์โอเวอร์ไดรฟ์หรือคลื่นสี่เหลี่ยมผืนผ้าสำหรับการเริ่มต้นครั้งแรก รูปที่ 8 แสดงตัวอย่างโปรไฟล์การเร่งความเร็วเอาต์พุตสำหรับพรอมต์การนับต่ำ

โปรไฟล์การเร่งความเร็วเอาต์พุตแบบพิกัดเวลาต่ำ

รูปที่ 8 ตัวอย่างโปรไฟล์การเร่งความเร็วเอาต์พุตสําหรับพรอมต์การนับเวลาต่ำ

พารามิเตอร์ คำแนะนำ
ระยะเวลา

เป้าหมาย: 12 มิลลิวินาที

ขีดจํากัด: < 30 มิลลิวินาที

การเร่งความเร็วเอาต์พุตสูงสุด

เป้าหมาย: 1/4 ของ TICK, 0.25 G

ขีดจํากัด: ระหว่าง 0.2 G ถึง 0.5 G

ความถี่

เป้าหมาย: ความถี่ที่ทำให้เกิดเสียงสะท้อน 2/3

ขีดจำกัด: < 100 Hz

องค์ประกอบเสียงร้อง

สัญญาณพื้นฐานของเสียงหวีดสามารถอธิบายได้ด้วยสัญญาณอินพุตสำหรับระดับแรงดันไฟฟ้าและความถี่การสั่นสะเทือน การเร่งความเร็วที่มอเตอร์สามารถส่งออกในช่วงความถี่ต่างๆ จะแตกต่างกันไปโดยขึ้นอยู่กับเส้นโค้งการตอบสนองความถี่ของอุปกรณ์กระตุ้น คุณต้องปรับช่วงความถี่และระดับแรงดันไฟฟ้าเป็นรายอุปกรณ์

รายการพื้นฐานที่เพิ่มขึ้นช้า

การเพิ่มขึ้นช้าๆ คือความกว้างและความถี่ที่ค่อยๆ เพิ่มขึ้น โดยเริ่มขึ้นอย่างนุ่มนวลและเพิ่มความถี่ของแรงสั่นอย่างต่อเนื่องตลอดการสแกน ซึ่งสามารถติดตั้งใช้งานโดยการกวาดทั้งแอมพลิจูดและความถี่อย่างสม่ำเสมอ โดยใช้ช่วงความถี่ที่ต่ำลงซึ่งทำงานโดยไม่เกิดเสียงสะท้อน รูปที่ 9 แสดงพารามิเตอร์อินพุตและตัวอย่างโปรไฟล์การเร่งความเร็วเอาต์พุตสําหรับการใช้งานนี้ (เส้นสีแดงตรงกับป้ายกำกับแอมพลิจูดทางด้านซ้ายและแสดงว่าแอมพลิจูดการสั่นไหวเปลี่ยนแปลงอย่างไรเมื่อเวลาผ่านไป เส้นสีน้ำเงินตรงกับป้ายกำกับความถี่ทางด้านขวาและแสดงถึงการเปลี่ยนแปลงความถี่การสั่นตามช่วงเวลา)

พารามิเตอร์อินพุตและโปรไฟล์การเร่งความเร็วเอาต์พุตสำหรับองค์ประกอบพื้นฐานที่เพิ่มขึ้นช้า

รูปที่ 9 พารามิเตอร์อินพุตและตัวอย่างโปรไฟล์การเร่งความเร็วเอาต์พุตสำหรับรูปแบบการเพิ่มขึ้นช้า

หากการตอบสนองความถี่ของมอเตอร์ถูกจํากัด (ไม่แรงพอที่จะตัดความถี่เรโซแนนซ์) การใช้งานทางเลือกคือการสแกนไซน์จาก 1/2 เท่าเป็น 1 เท่าของความถี่เรโซแนนซ์ การสั่นของมอเตอร์มีส่วนทำให้สัญญาณถึงจุดสูงสุดในตอนท้าย

พารามิเตอร์ คำแนะนำ
ระยะเวลา

เป้าหมาย: 500 มิลลิวินาที

ความคลาดเคลื่อน: 20 มิลลิวินาที

การเร่งความเร็วเอาต์พุตสูงสุด

เป้าหมาย: 0.5 G

ขีดจํากัด: ระหว่าง 0.5 G ถึง 1 G

ความถี่

เป้าหมาย: 1/2 ถึง 2/3 ของความถี่เรโซแนนซ์

ทางเลือก: 1/2 ของความถี่เรโซแนนซ์

องค์ประกอบการเพิ่มขึ้นอย่างรวดเร็ว

การเพิ่มขึ้นอย่างรวดเร็วคือความกว้างและความถี่ที่เพิ่มขึ้นอย่างรวดเร็วโดยเริ่มขึ้นอย่างนุ่มนวล และเพิ่มความถี่ของการสั่นอย่างต่อเนื่องตลอดการสแกน เป้าหมายความถี่ของการเร่งและการสั่นของเอาต์พุตควรเหมือนกับค่าเริ่มต้นที่เพิ่มขึ้นช้า ซึ่งทำได้ในระยะเวลาสั้นลง รูปที่ 10 แสดงพารามิเตอร์อินพุตการสั่นและตัวอย่างโปรไฟล์การเร่งความเร็วเอาต์พุตสำหรับพรีมิทีฟการเพิ่มขึ้นช้า (เส้นสีแดงตรงกับป้ายกำกับแอมพลิจูดทางด้านซ้ายและแสดงว่าแอมพลิจูดการสั่นไหวเปลี่ยนแปลงอย่างไรเมื่อเวลาผ่านไป เส้นสีน้ำเงินตรงกับป้ายกำกับความถี่ทางด้านขวาและแสดงถึงความถี่ของแรงสั่นที่เปลี่ยนแปลงไปตามช่วงเวลา)

พารามิเตอร์อินพุตและโปรไฟล์การเร่งความเร็วเอาต์พุตสําหรับพรอมิเนก์การเพิ่มขึ้นอย่างรวดเร็ว

รูปที่ 10 พารามิเตอร์อินพุตและตัวอย่างโปรไฟล์ความเร่งของเอาต์พุตสำหรับองค์ประกอบพื้นฐานแบบเพิ่มขึ้นอย่างรวดเร็ว

พารามิเตอร์ คำแนะนำ
ระยะเวลา

เป้าหมาย: 150 มิลลิวินาที

ความคลาดเคลื่อน: 20 มิลลิวินาที

การเร่งความเร็วเอาต์พุตสูงสุด

เป้าหมาย: เหมือนกับ SLOW_RISE

ขีดจํากัด: เหมือนกับ SLOW_RISE

ความถี่

เป้าหมาย: เหมือนกับ SLOW_RISE

ทางเลือก: เหมือนกับ SLOW_RISE

องค์ประกอบการลดลงอย่างรวดเร็ว

การลดลงอย่างรวดเร็วคือความกว้างและความถี่ที่ลดลงอย่างรวดเร็วโดยเริ่มขึ้นอย่างนุ่มนวล คุณสามารถใช้ความถี่ที่สูงขึ้นเป็นจุดเริ่มต้นขณะที่มอเตอร์กำลังเร่งความเร็วเพื่อไปถึงความเร็วสูงสุด ความถี่ควรลดลงอย่างต่อเนื่องตลอดการสแกน แม้ในช่วงที่สัญญาณเพิ่มขึ้น รูปที่ 11 แสดงพารามิเตอร์อินพุตและตัวอย่างโปรไฟล์การเร่งความเร็วเอาต์พุตสําหรับการใช้งานนี้ (เส้นสีแดงตรงกับป้ายกำกับแอมพลิจูดทางด้านซ้ายและแสดงว่าแอมพลิจูดการสั่นไหวเปลี่ยนแปลงอย่างไรเมื่อเวลาผ่านไป เส้นสีน้ำเงินตรงกับป้ายกำกับความถี่ทางด้านขวาและแสดงถึงการเปลี่ยนแปลงความถี่ของแรงสั่นตามช่วงเวลา)

พารามิเตอร์อินพุตและโปรไฟล์ความเร่งเอาต์พุตสำหรับพรอมต์การตกอย่างรวดเร็ว

รูปที่ 11 พารามิเตอร์อินพุตและตัวอย่างโปรไฟล์การเร่งความเร็วเอาต์พุตสำหรับพรอมต์การตกอย่างรวดเร็ว

พารามิเตอร์ คำแนะนำ
ระยะเวลา

เป้าหมาย: 100 มิลลิวินาที

ความคลาดเคลื่อน: 20 มิลลิวินาที

การเร่งความเร็วเอาต์พุตสูงสุด

เป้าหมาย: 1 G

ขีดจํากัด: ระหว่าง 0.5 G ถึง 2 G

ความถี่

เป้าหมาย: 2-1 เท่าของความถี่เรโซแนนซ์

เสียงกระแทก

เสียงดังตุบเป็นเสียงต่ำที่ดังกึกก้องซึ่งจำลองความรู้สึกของการเคาะไม้กลวง พรอมต์ประเภทนี้ทำงานในช่วงความถี่ต่ำ คล้ายกับพรอมต์ประเภท Tick ต่ำ เพื่อให้เอฟเฟกต์มีความสมจริงมากขึ้น คุณสามารถใช้เสียงดังเป็นองค์ประกอบพื้นฐานเป็นความกว้างและความถี่ที่ลดลงในช่วงความถี่ต่ำ (ควรน้อยกว่า 100 Hz) รูปที่ 12 แสดงพารามิเตอร์อินพุตและตัวอย่างโปรไฟล์การเร่งความเร็วเอาต์พุตสําหรับการใช้งานนี้ (เส้นสีแดงตรงกับป้ายกำกับแอมพลิจูดทางด้านซ้ายและแสดงว่าแอมพลิจูดการสั่นไหวเปลี่ยนแปลงอย่างไรเมื่อเวลาผ่านไป เส้นสีน้ำเงินตรงกับป้ายกำกับความถี่ทางด้านขวาและแสดงถึงการเปลี่ยนแปลงความถี่การสั่นตามช่วงเวลา)

พารามิเตอร์อินพุตและโปรไฟล์การเร่งความเร็วเอาต์พุตสำหรับ Primitive ของเสียงดัง

รูปที่ 12 พารามิเตอร์อินพุตและตัวอย่างโปรไฟล์การเร่งความเร็วเอาต์พุตสำหรับพรอมต์เสียงกระแทก

หากการตอบสนองความถี่ของมอเตอร์ถูกจํากัด การใช้งานทางเลือกคือเริ่มจากสัญญาณไดรฟ์ที่ความเข้มเต็มรูปแบบที่ความถี่เรโซแนนซ์ แล้วลดลงไปเป็นความถี่ต่ำสุดที่ยังคงรับรู้ได้ วิธีการนี้อาจต้องเพิ่มความเข้มของสัญญาณไดรฟ์ที่ความถี่ต่ำเพื่อให้รู้สึกถึงแรงสั่นสะเทือน

พารามิเตอร์ คำแนะนำ
ระยะเวลา

เป้าหมาย: 300 มิลลิวินาที

ความคลาดเคลื่อน: 20 มิลลิวินาที

การเร่งความเร็วเอาต์พุตสูงสุด

เป้าหมาย: 0.25 G

ขีดจํากัด: ระหว่าง 0.2 ถึง 0.5 G

ความถี่

เป้าหมาย: 1/2 ถึง 1/3 ของความถี่เรโซแนนซ์

ทางเลือก: 1 ถึง 1/2 ของความถี่เรโซแนนซ์

องค์ประกอบพื้นฐานของการหมุน

ภาพหมุนจำลองโมเมนตัมของการหมุนขึ้นและลงอย่างรวดเร็ว โดยมีจุดเน้นเล็กน้อยตรงกลาง คุณสามารถใส่ภาพหมุนได้โดยการสแกนความกว้างและความถี่แยกกัน โดยการสแกนไปในทิศทางตรงข้ามกันและตามด้วยการเคลื่อนไหวย้อนกลับ คุณควรใช้ช่วงความถี่ที่ต่ำลง (ควรน้อยกว่า 100 Hz) รูปที่ 13 แสดงพารามิเตอร์อินพุตและตัวอย่างโปรไฟล์การเร่งความเร็วเอาต์พุตสําหรับการใช้งานนี้ (เส้นสีแดงตรงกับป้ายกำกับแอมพลิจูดทางด้านซ้ายและแสดงว่าแอมพลิจูดการสั่นไหวเปลี่ยนแปลงอย่างไรเมื่อเวลาผ่านไป เส้นสีน้ำเงินตรงกับป้ายกำกับความถี่ทางด้านขวาและแสดงถึงการเปลี่ยนแปลงความถี่การสั่นตามช่วงเวลา)

เราขอแนะนำให้เรียกใช้พรอมต์ภาพหมุนติดต่อกัน 2 ครั้งหรือ 3 ครั้งในองค์ประกอบเพื่อให้ได้ความรู้สึกหมุนและไม่มั่นคง

หากการตอบสนองความถี่ของมอเตอร์ถูกจํากัด การใช้งานทางเลือกคือการสุ่มความถี่ไซน์อย่างรวดเร็วจาก 1/2 เท่าเป็น 1 เท่าของความถี่เรโซแนนซ์และกลับ การสั่นของมอเตอร์จะทำให้เกิดเสียงแหลมตรงกลางสัญญาณโดยอัตโนมัติ

พารามิเตอร์อินพุตและโปรไฟล์การเร่งความเร็วเอาต์พุตสำหรับ Primitive ของการหมุน

รูปที่ 13 พารามิเตอร์อินพุตและตัวอย่างโปรไฟล์การเร่งความเร็วเอาต์พุตสำหรับพรอมต์ภาพการหมุน

พารามิเตอร์ คำแนะนำ
ระยะเวลา

เป้าหมาย: 150 มิลลิวินาที

ความคลาดเคลื่อน: 20 มิลลิวินาที

การเร่งความเร็วเอาต์พุตสูงสุด

เป้าหมาย: 0.5 G

ขีดจํากัด: ระหว่าง 0.25 ถึง 0.75 กรัม

ความถี่

เป้าหมาย: 2/3 เป็น 1/3 แล้วกลับไปเป็น 1/2 ของความถี่เรโซแนนซ์

ทางเลือก: 2/3 เป็น 1x แล้วกลับไปที่ 1/2 ของความถี่เรโซแนนซ์

ขั้นตอนที่ 3: แมปค่าคงที่ระหว่าง HAL กับ API

ขั้นตอนที่ 3 แสดงการแมปที่แนะนำระหว่างค่าคงที่ HAL สาธารณะและค่าคงที่ API หากฮาร์ดแวร์ที่ประเมินในขั้นตอนที่ 1 ไม่ได้ใช้ค่าคงที่ HAL ให้ใช้ขั้นตอนที่ 3 เพื่ออัปเดตรูปแบบสำรองที่อธิบายไว้ในขั้นตอนที่ 1 เพื่อสร้างเอาต์พุตที่คล้ายกัน การแมปได้รับความช่วยเหลือจากโมเดลเริ่มต้น 2 แบบ ได้แก่

  • โมเดลแบบไม่ต่อเนื่อง (แบบง่าย)

    • Amplitude คือตัวแปรหลักของรูปแบบนี้ เอนทิตีแต่ละรายการใน HAL จะแสดงถึงแอมพลิจูดของการสัมผัสที่แตกต่างกัน
    • โมเดลนี้เป็นข้อกำหนดขั้นต่ำที่จำเป็นในการใช้ UX สัมผัสพื้นฐาน
    • UX ของการสัมผัสขั้นสูงขึ้นต้องใช้ฮาร์ดแวร์ขั้นสูงและรุ่นขั้นสูง (รุ่นต่อเนื่อง)
  • โมเดลต่อเนื่อง (ขั้นสูง)

    • พื้นผิวและความกว้างเป็นตัวแปรหลักของโมเดลนี้ เอนทิตีแต่ละรายการใน HAL จะแสดงพื้นผิวสัมผัสที่แตกต่างกัน แอมพลิจูดของเอนทิตี้ HAL แต่ละรายการจะควบคุมโดยปัจจัยการขยาย (S)
    • รุ่นนี้ต้องใช้ฮาร์ดแวร์ขั้นสูง หาก OEM ต้องการใช้ UX ของการสัมผัสขั้นสูงกับ VibrationEffect.Composition (เพื่อการใช้ API การสัมผัสล่าสุดอย่างเต็มประสิทธิภาพ) เราขอแนะนำให้ติดตั้งใช้งานฮาร์ดแวร์โดยใช้รูปแบบนี้

โมเดลแบบไม่ต่อเนื่อง

เราขอแนะนําให้แมปค่าคงที่สาธารณะทั้งหมดที่ระบุไว้ใน API กับค่าคงที่ HAL ที่เหมาะสม ในการเริ่มกระบวนการนี้ ให้ดูว่าอุปกรณ์กำหนดรูปแบบการสั่นที่มีแอมพลิจูดแบบไม่ต่อเนื่องได้กี่รูปแบบใน HAL คำถามที่เฉพาะเจาะจงซึ่งสร้างขึ้นจากแนวคิดนี้มีลักษณะดังนี้ ฉันกำหนดเอฟเฟกต์การสัมผัสแบบแรงกระตุ้นเดียวที่มีความแตกต่างของระดับความดังที่มนุษย์รับรู้ได้ในโทรศัพท์ได้กี่รายการ คำตอบของคําถามนี้จะกําหนดการแมป

การกําหนดค่าคงที่ HAL เป็นกระบวนการที่ขึ้นอยู่กับฮาร์ดแวร์ ตัวอย่างเช่น โทรศัพท์ระดับเริ่มต้นอาจมีความสามารถของฮาร์ดแวร์ในการสร้างรูปแบบการสัมผัสได้เพียงรูปแบบเดียว อุปกรณ์ที่มีคอมโพเนนต์ฮาร์ดแวร์ขั้นสูงจะสร้างระดับแอมพลิจูดแบบไม่ต่อเนื่องได้กว้างขึ้น และกำหนดรูปแบบการสั่นหลายรูปแบบใน HAL ได้ การแมปค่าคงที่ HAL-API จะใช้ค่าคงที่ HAL (โดยใช้ความกว้างของสัญญาณเป็นฐาน) จากนั้นจัดเรียงเอฟเฟกต์ที่แรงขึ้นหรืออ่อนลงจากค่านั้น

แผนภาพช่วงค่าคงที่ของ HAL และระดับความแรงของสัญญาณป้อนกลับ

รูปที่ 14 ช่วงค่าคงที่ HAL ตามแอมพลิจูด

เมื่อกําหนดจํานวนค่าคงที่ HAL ที่มีแอมพลิจูดแบบไม่ต่อเนื่องแล้ว ก็ถึงเวลาจับคู่ค่าคงที่ HAL และ API ตามจํานวนค่าคงที่ HAL กระบวนการแมปนี้สามารถแบ่งกลุ่มค่าคงที่ API แบบอิมพัลส์รายการเดียวออกเป็นกลุ่มระดับแอมพลิจูดแบบแยกต่างหากได้สูงสุด 3 กลุ่ม วิธีที่แบ่งกลุ่มค่าคงที่ของ API จะอิงตามหลักการ UX สําหรับเหตุการณ์อินพุตที่มาพร้อมกับ ดูข้อมูลเพิ่มเติมได้ที่การสัมผัส การออกแบบ UX

โมเดลแบบไม่ต่อเนื่องสำหรับการแมปค่าคงที่ HAL-API

รูปที่ 15 การแมปค่าคงที่ HAL-API: โมเดลแบบไม่ต่อเนื่อง

หากอุปกรณ์รองรับค่าคงที่ HAL เพียง 2 ค่าที่มีระดับความกว้างของคลื่นแบบไม่ต่อเนื่อง ให้พิจารณาผสานค่าคงที่ HAL ระดับความกว้างของคลื่นปานกลางและสูง ตัวอย่างแนวคิดนี้ในทางปฏิบัติคือการแมป EFFECT_CLICK และ EFFECT_HEAVY_CLICK กับค่าคงที่ HAL เดียวกัน ซึ่งจะเป็นค่าคงที่ HAL ระดับความกว้างของคลื่นปานกลาง หากอุปกรณ์รองรับค่าคงที่ HAL รายการเดียวที่มีระดับความดังแบบไม่ต่อเนื่อง ให้พิจารณารวมระดับทั้ง 3 ระดับเข้าด้วยกัน

รูปแบบต่อเนื่อง

คุณสามารถใช้รูปแบบต่อเนื่องที่ปรับขนาดแอมพลิจูดได้เพื่อกำหนดค่าคงที่ HAL ปัจจัยการแปลง (S) สามารถใช้กับค่าคงที่ HAL (เช่น HAL_H0, HAL_H1) เพื่อสร้าง HAL ที่ปรับขนาด (HAL_H0 x S) ในกรณีนี้ HAL ที่ปรับขนาดจะแมปกับค่าคงที่ API (HAL_H0 x S1 = H0S1 = EFFECT_TICK) ดังที่แสดงในรูปที่ 16 การใช้การปรับขนาดความกว้างของรูปแบบต่อเนื่องช่วยให้อุปกรณ์จัดเก็บค่าคงที่ HAL เพียงไม่กี่ค่าที่มีพื้นผิวที่โดดเด่นและเพิ่มรูปแบบความกว้างที่แตกต่างกันได้โดยการปรับปัจจัยการขยาย (S) ผู้ผลิตอุปกรณ์สามารถกำหนดจำนวนค่าคงที่ HAL ตามจำนวนพื้นผิวสัมผัสที่แตกต่างกันที่ต้องการนำเสนอ

ช่วงค่าคงที่ HAL ตามพื้นผิวและความกว้าง

รูปที่ 16 ช่วงค่าคงที่ HAL ตามพื้นผิว (HAL_H0) และมาตราส่วนแอมพลิจูด (S)

รูปแบบต่อเนื่องสำหรับการแมปค่าคงที่ HAL-API

รูปที่ 17 การแมปค่าคงที่ HAL-API: โมเดลแบบต่อเนื่อง

ในโมเดลแบบต่อเนื่อง ค่าคงที่ HAL ที่แตกต่างกันจะแสดงพื้นผิวสัมผัสที่แตกต่างกัน ไม่ใช่ความกว้างของสัญญาณที่แตกต่างกัน ปัจจัยการขยาย (S) สามารถกำหนดค่าความกว้างของสัญญาณได้ อย่างไรก็ตาม เนื่องจากการรับรู้พื้นผิว (เช่น ความคมชัด) เกี่ยวข้องกับการรับรู้ระยะเวลาและความกว้าง เราจึงขอแนะนำให้รวมพื้นผิวและปัจจัยการขยาย (ในกระบวนการออกแบบการแมป HAL-API)

รูปที่ 18 แสดงการแมปค่าคงที่โดยการเพิ่มความหลากหลายจาก HAL 1 รายการเป็นค่าคงที่ API หลายรายการที่มีความยืดหยุ่นของระดับความดัง

การเพิ่มรูปแบบ
1

การเพิ่มรูปแบบ
2

รูปที่ 18 การเพิ่มรูปแบบด้วยการปรับขนาดแอมพลิจูด

สําหรับค่าคงที่ API ที่ปรับขนาดได้ทั้งหมด เช่น PRIMITIVE_TICK และ PRIMITIVE_CLICK ใน VibrationEffect.Composition ระดับพลังงานของค่าคงที่ API จะขึ้นอยู่กับพารามิเตอร์ float scale เมื่อมีการประกาศค่าคงที่ API ผ่าน addPrimitive(int primitiveID, float scale, int delay) PRIMITIVE_TICK และ PRIMITIVE_CLICK สามารถออกแบบให้แตกต่างกันอย่างชัดเจนได้โดยใช้ค่าคงที่ HAL ที่ต่างกัน เราขอแนะนําให้ใช้แนวทางนี้หากต้องการเพิ่มความหลากหลายให้กับพื้นผิว

ขั้นตอนที่ 4: ประเมินฮาร์ดแวร์

การประเมินฮาร์ดแวร์เกี่ยวข้องกับการกำหนดเอฟเฟกต์การสัมผัส 3 รายการที่มีป้ายกำกับว่าเอฟเฟกต์ 1, 2 และ 3 สำหรับการประเมินนี้โดยเฉพาะ

ผลลัพธ์ที่ 1: ผลลัพธ์ของการสัมผัสแบบสั้นที่กำหนดไว้ล่วงหน้า

ตัวแปรค่าคงที่ VibrationEffect.EFFECT_CLICK คือผลฐานหรือตัวหารร่วมในการแมป HAL-API ที่ระบุไว้ในขั้นตอนที่ 2 ซึ่งจับคู่กับเอฟเฟกต์ที่ใช้มากที่สุด HapticFeedbackConstants.KEYBOARD_PRESS การประเมินผลนี้จะช่วยระบุความพร้อมของอุปกรณ์เป้าหมายสำหรับการสัมผัสที่ชัดเจน

ผลที่ 2: ผลสัมผัสที่กำหนดเองแบบสั้น

ตัวแปรค่าคงที่ VibrationEffect.createOneShot(20,255) ใช้สำหรับเอฟเฟกต์การสัมผัสที่กําหนดเอง สําหรับแรงกระตุ้นที่กําหนดเองแบบสั้นๆ รายการเดียว เราขอแนะนําให้ใช้เกณฑ์สูงสุด 20 มิลลิวินาทีเพื่อกําหนดระยะเวลา เราไม่แนะนำให้ใช้พัลส์เดียวที่ยาวกว่า 20 ms เนื่องจากผู้ใช้จะรับรู้ว่าเป็นการสั่น

รูปแบบคลื่นของเอฟเฟกต์การสัมผัสที่กำหนดเองสั้นๆ

รูปที่ 19 ผลลัพธ์ของการสัมผัสที่กำหนดเองแบบสั้น

ผลที่ 3: ผลสัมผัสที่กำหนดเองแบบยาวที่มีความผันผวนของระดับความดัง

ค่าคงที่ VibrationEffect.createWaveform(timings[], amplitudes[], int repeat) มีไว้สำหรับเอฟเฟกต์ที่กำหนดเองแบบยาวที่มีความผันผวนของแอมพลิจูด ความสามารถในการสร้างแอมพลิจูดที่หลากหลายสำหรับเอฟเฟกต์การสัมผัสที่กําหนดเองเป็นหนึ่งในตัวบ่งชี้ในการประเมินความสามารถของอุปกรณ์สําหรับการสัมผัสที่สมจริง timings [] และ amplitudes [] ที่แนะนําคือ {500, 500} และ {128, 255} ตามลําดับ ซึ่งแสดงแนวโน้มความกว้างของคลื่นที่เพิ่มขึ้นจาก 50% เป็น 100% โดยมีอัตราการสุ่มตัวอย่าง 500 ms

รูปแบบคลื่นของเอฟเฟกต์การสัมผัสที่มีการเปลี่ยนแปลงแอมพลิจูด

รูปที่ 20 สัมผัสที่กำหนดเองแบบยาวที่มีการเปลี่ยนแปลงความกว้างของคลื่น

หากต้องการตรวจสอบความสามารถของฮาร์ดแวร์ในการควบคุมระดับความดังสำหรับเอฟเฟกต์ 3 ให้ใช้วิธี Vibrator.hasAmplitudeControl() ผลลัพธ์ต้องเป็น true เพื่อดำเนินการ VibrationEffect.createWaveform โดยมีแอมพลิจูดที่เปลี่ยนแปลงตามที่ตั้งใจไว้

โฟลว์ชาร์ตการประเมินผลความรู้สึกสัมผัสที่ได้จากผู้ใช้

รูปที่ 21 การประเมินผลของผู้ใช้เกี่ยวกับเอฟเฟกต์การสัมผัส 1, 2 และ 3

ประเมินแบบอัตวิสัย

หากต้องการตรวจสอบความสอดคล้องอย่างรวดเร็ว ให้ประเมินแบบอัตวิสัยก่อน เป้าหมายของการประเมินแบบอัตนัยคือสังเกตแอมพลิจูดของผลลัพธ์การสัมผัสเพื่อพิจารณาว่าอุปกรณ์สามารถสร้างการสัมผัสที่มีแอมพลิจูดที่มนุษย์รับรู้ได้หรือไม่

คำถามที่เฉพาะเจาะจงซึ่งจัดโครงสร้างตามแนวคิดนี้มีลักษณะดังนี้ อุปกรณ์สร้างผลสัมผัสที่ผู้ใช้รับรู้ได้ตามที่คาดไว้ได้ไหม การตอบคำถามนี้จะช่วยหลีกเลี่ยงการสัมผัสที่ไม่สำเร็จ ซึ่งรวมถึงการสัมผัสที่มองไม่เห็นซึ่งผู้ใช้ไม่รู้สึก หรือสัมผัสที่ไม่ได้ตั้งใจซึ่งรูปแบบคลื่นไม่ได้สร้างรูปแบบตามที่ตั้งใจไว้

ดำเนินการประเมินขั้นสูง

ขอแนะนําอย่างยิ่งให้ทําการประเมินคุณภาพขั้นสูง การประเมินคุณภาพขั้นสูงจะระบุแอตทริบิวต์ที่วัดผลได้ของเอฟเฟกต์การสัมผัสเพื่อใช้การสัมผัสที่มีคุณภาพ เมื่อเสร็จสิ้น ผู้ผลิตอุปกรณ์ควรจะสามารถวิเคราะห์สถานะการสัมผัสปัจจุบัน ซึ่งหมายความว่าสามารถตั้งเป้าหมายเพื่อปรับปรุงคุณภาพโดยรวมได้ ดูการประเมินฮาร์ดแวร์