ใช้เอฟเฟกต์ของซองจดหมายเชิงเส้นแบบ Piecewise

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

Android 16 ขึ้นไปมี API สําหรับนักพัฒนาแอป 2 รายการเพื่อช่วยสร้างเอฟเฟกต์ PWLE ดังนี้

  • PWLE API พื้นฐาน: ใช้งานง่าย แต่มีข้อจํากัด เหมาะสำหรับการเริ่มต้นใช้งานอย่างรวดเร็ว ฟีเจอร์นี้พร้อมให้บริการที่ BasicEnvelopeBuilder
  • PWLE API ขั้นสูง: การควบคุมและความยืดหยุ่นมากขึ้น ต้องใช้ความรู้เกี่ยวกับระบบสัมผัสและมีความคุ้นเคยกับฮาร์ดแวร์พอสมควร ดูได้ที่ WaveformEnvelopeBuilder

อุปกรณ์ต้องใช้ HAL API ต่อไปนี้เพื่อรองรับ API เหล่านี้

  • การแมปความถี่กับอัตราเร่งเอาต์พุต (FOAM): ให้การแมปความถี่การสั่นสะเทือนกับอัตราเร่งเอาต์พุตสูงสุดที่อุปกรณ์ทำได้
  • เขียน PWLE: เล่นการสั่นที่กำหนดโดย PWLE ของรูปแบบคลื่นการสั่น

PWLE API พื้นฐาน

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

  • ค่าความเข้มในช่วง [0, 1] แสดงถึงระดับการรับรู้ถึงแรงสั่น เช่น ค่า 0.5 จะรับรู้ว่าเป็นครึ่งหนึ่งของความเข้มสูงสุดโดยรวมที่อุปกรณ์ทำได้
  • ค่าความคมชัดในช่วง [0, 1] แสดงถึงความคมชัดของการสั่น ค่าที่ต่ำลงจะทำให้เกิดการสั่นที่นุ่มนวลขึ้น ส่วนค่าที่สูงขึ้นจะทำให้เกิดความรู้สึกที่คมชัดขึ้น
  • ระยะเวลาคือเวลาที่ใช้ในการเปลี่ยนจากจุด PWLE สุดท้าย (นั่นคือคู่ความเข้มและความคมชัด) ไปยังจุดใหม่ โดยวัดเป็นมิลลิวินาที

ต่อไปนี้คือตัวอย่างรูปแบบคลื่นที่เพิ่มความเข้มข้นจากเสียงต่ำไปเป็นเสียงสูงที่แรงสุดในช่วง 500 มิลลิวินาที จากนั้นค่อยๆ ลดลงเป็น 0 (ปิด) ในช่วง 100 มิลลิวินาที

VibrationEffect effect = new VibrationEffect.BasicEnvelopeBuilder()
          .setInitialSharpness(0.0f)
          .addControlPoint(1.0f, 1.0f, 500)
          .addControlPoint(0.0f, 1.0f, 100)
          .build();

ข้อจำกัด

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

เพื่อให้การแสดงผลเอฟเฟกต์ PWLE ที่สอดคล้องกันทั่วทั้งระบบนิเวศ Android เฟรมเวิร์กกำหนดให้อุปกรณ์ที่รองรับฟีเจอร์นี้สามารถจัดการระยะเวลาขั้นต่ำ 10 ms ระหว่างจุด PWLE และจุดสำหรับเอฟเฟกต์ PWLE อย่างน้อย 16 จุด ข้อกำหนดเหล่านี้บังคับใช้โดยการทดสอบ VTS ซึ่งช่วยให้มั่นใจว่าอุปกรณ์ Android ทั้งหมดจะมีเอฟเฟกต์ PWLE ที่เชื่อถือได้

PWLE API ขั้นสูง

นักพัฒนาซอฟต์แวร์ที่มีความรู้ขั้นสูงเกี่ยวกับระบบสัมผัสสามารถกำหนดเอฟเฟกต์ PWLE โดยใช้เกณฑ์ต่อไปนี้

  • ค่าแอมพลิจูดในช่วง [0, 1] แสดงถึงระดับความแรงที่ทำได้เมื่อใช้ความถี่หนึ่งๆ ตามที่กำหนดโดย FOAM ของอุปกรณ์ เช่น ค่า 0.5 จะสร้างการเร่งความเร็วเอาต์พุตสูงสุดครึ่งหนึ่งที่สามารถบรรลุได้เมื่อใช้ความถี่ที่ระบุ
  • ระบุความถี่เป็นเฮิรตซ์โดยตรง
  • ระยะเวลาคือเวลาที่ใช้ในการเปลี่ยนจากจุด PWLE สุดท้ายไปยังจุดใหม่เป็นมิลลิวินาที

ต่อไปนี้คือตัวอย่างรูปแบบคลื่นที่เพิ่มระดับเครื่องสั่นจากปิดเป็นแอมพลิจูดเต็มรูปแบบที่ 120 Hz ในช่วง 100 ms, คงสถานะนั้นไว้ 200 ms แล้วค่อยๆ ลดลงในช่วง 100 ms

VibrationEffect effect = new VibrationEffect.WaveformEnvelopeBuilder()
          .addControlPoint(1.0f, 120f, 100)
          .addControlPoint(1.0f, 120f, 200)
          .addControlPoint(0.0f, 120f, 100)
          .build();

ข้อจำกัด

เฟรมเวิร์กจะไม่แก้ไขค่าความถี่และความกว้างของคลื่นที่นักพัฒนาแอประบุ แต่เพิ่มจุดเริ่มต้นความกว้างของคลื่นเป็น 0 เพื่อให้การเปลี่ยนเป็นไปอย่างราบรื่น

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

การแมปความถี่เพื่อเร่งเอาต์พุต (FOAM)

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

ทําความเข้าใจการแมป

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

ผังต่อไปนี้แสดงตัวอย่าง FOAM สําหรับตัวกระตุ้นแบบเรโซแนนซ์ทั่วไป โดยมีแรงดันไฟฟ้าอินพุตที่จำกัดไว้รอบๆ ความถี่เรโซแนนซ์เพื่อปกป้องมอเตอร์

ตัวอย่าง
FOAM

รูปที่ 1 ตัวอย่างโฟมสำหรับตัวกระตุ้นแบบเรโซแนนซ์ทั่วไป

FOAM มีวัตถุประสงค์หลัก 3 ประการ ได้แก่

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

FOAM และ PWLE API พื้นฐาน

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

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

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

FOAM และ PWLE API ขั้นสูง

VibratorFrequencyProfile เปิดเผย FOAM ให้กับนักพัฒนาแอปพร้อมข้อมูลต่อไปนี้

  • ช่วงความถี่: นักพัฒนาแอปสามารถดึงข้อมูลความถี่ต่ำสุดและสูงสุดที่รองรับของอุปกรณ์เป็นเฮิร์ตซ์ได้โดยใช้ getMinFrequencyHz และ getMaxFrequencyHz ตามลำดับ
  • การเร่งความเร็วเอาต์พุตสูงสุด: getMaxOutputAccelerationGs แสดงการเร่งความเร็วเอาต์พุตสูงสุด (เป็น G) ที่อุปกรณ์ทำได้
  • การแมปความถี่กับเอาต์พุตการเร่ง: getFrequenciesOutputAcceleration ให้การแมปความถี่กับเอาต์พุตการเร่งตามที่ติดตั้งใช้งานใน HAL

นักพัฒนาซอฟต์แวร์สามารถใช้ข้อมูลนี้เมื่อสร้างเอฟเฟกต์ของโฟลเดอร์ด้วย PWLE API ขั้นสูง เช่น เมื่อระบุการเร่งความเร็วเอาต์พุต (ใน G) ต้องทำให้ค่าเป็นค่าปกติภายในช่วง [0.0, 1.0] โดยสัมพันธ์กับการเร่งความเร็วเอาต์พุตสูงสุดของอุปกรณ์

เมื่อใช้ PWLE API ขั้นสูง นักพัฒนาแอปสามารถใช้ช่วงความถี่ทั้งหมดได้ ดังนั้นข้อมูล FOAM ที่ระบุจึงต้องปลอดภัยต่อเครื่องสั่นและไม่เกินความสามารถของเครื่อง

เกณฑ์การตรวจจับการรับรู้ของมนุษย์

เกณฑ์การตรวจจับการรับรู้ของมนุษย์หมายถึงความเร่งขั้นต่ำของการสั่นที่มนุษย์สามารถตรวจจับได้อย่างน่าเชื่อถือ ระดับนี้แตกต่างกันไปตามความถี่ของการสั่น

ผังต่อไปนี้แสดงเกณฑ์การตรวจจับการรับรู้สัมผัสของมนุษย์1 ในอัตราเร่ง ในฐานะฟังก์ชันของความถี่ตามช่วงเวลา

เกณฑ์การตรวจจับการรับรู้การสัมผัสของมนุษย์

รูปที่ 2 เกณฑ์การตรวจจับการรับรู้สัมผัสของมนุษย์

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

ความแรงของการสั่นที่รับรู้เทียบกับแอมพลิจูดของการเร่งความเร็วของการสั่น

การรับรู้ของมนุษย์เกี่ยวกับความแรงของการสั่น (การวัดการรับรู้) ไม่ได้เพิ่มขึ้นตามเชิงเส้นกับแอมพลิจูดของการสั่น (พารามิเตอร์ทางกายภาพ) PWLE API จะถือว่าเมื่อนักออกแบบหรือนักพัฒนาซอฟต์แวร์คิดถึงการเปลี่ยนแปลงความแรงของการสั่น บุคคลเหล่านั้นคาดหวังว่าความแรงที่รับรู้จะเป็นไปตาม PWLE ระดับความแรงที่รับรู้จะมีลักษณะเป็นระดับความรู้สึก (SL) ซึ่งหมายถึง dB เหนือเกณฑ์การตรวจจับที่ความถี่เดียวกัน ดังนั้น คุณจะคํานวณแอมพลิจูดความเร่งของแรงสั่นสะเทือน (ในพีค G) ได้โดยทำดังนี้

\(Amplitude(G) =10^\frac{Amplitude(db)}{20}\)

โดยที่ dB ของระดับแอมพลิจูดคือผลรวมของ SL และเกณฑ์การตรวจจับ (ค่าตามแนวตั้งในผังต่อไปนี้) ที่ความถี่หนึ่งๆ

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

ผังต่อไปนี้แสดงระดับการเร่งความเร็วของแรงสั่น2 ที่ 10, 20, 30, 40 และ 50 dB SL พร้อมกับเกณฑ์การตรวจจับการรับรู้สัมผัสของมนุษย์ (0 dB SL) ตามฟังก์ชันของความถี่ตามช่วงเวลา

ระดับการเร่งการสั่น

รูปที่ 3 ระดับการเร่งความเร็วของการสั่น

กำหนดความถี่ของเส้นโค้งการเร่งความเร็วเอาต์พุตสูงสุด

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

รับเส้นโค้งแรงดันไฟฟ้าสูงสุด (V)

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

หากฮาร์ดแวร์มีฟีเจอร์การจำกัดแรงดันไฟฟ้า ให้ใช้ฟีเจอร์ดังกล่าวเพื่อวัดแรงดันไฟฟ้าสูงสุดที่ทำได้โดยตรงในช่วงความถี่ที่รองรับ

คำนวณอัตราเร่งสูงสุด (M)

M คือความเร่งสูงสุด ซึ่งคุณคำนวณได้โดยใช้วิธีการต่างๆ ส่วนนี้จะแสดงวิธีหนึ่งสำหรับอุปกรณ์ที่ใช้ตัวกระตุ้นแบบเรโซแนนซ์เชิงเส้น (LRA)

วิธีนี้แปลงแรงดันไฟฟ้าสูงสุดที่ใช้กับความถี่หนึ่งๆ เป็นค่าความเร่งสูงสุดที่เกี่ยวข้อง ซึ่งแสดงเป็น G สูงสุด

สมการหลักที่ใช้สําหรับ Conversion นี้ ได้แก่

\(\text{Accel}(w)= (\text{Vsys}\times\text{BLsys}\times\text{Loc_coeff}/\text{Rsys}/\text{MPhone})\times{w^2}/\text{Psys_abs}/{9.81}\)

สถานที่:

Vsys: ระดับแรงดันไฟฟ้าจริงที่ใช้กับตัวกระตุ้นการสัมผัส

BLsys: ผลคูณของความแรงของสนามแม่เหล็ก (B) กับความยาวตัวนำ (L) ของมอเตอร์สั่น

Loc_coeff: สัมประสิทธิ์ตําแหน่งเพื่อแปลงการเร่งระดับโมดูลเป็นการเร่งระดับโทรศัพท์

Rsys: ความต้านทานไฟฟ้าของขดลวดมอเตอร์สั่น

MPhone: มวลของอุปกรณ์ (เช่น โทรศัพท์)

w: ความถี่เชิงมุม (เรเดียนต่อวินาที) ของสัญญาณขับ ซึ่งคำนวณดังนี้

\(w = 2 \pi f\)

Psys_abs: การตอบสนองของแอมพลิจูดของระบบมวล โช้ค และสปริงลำดับที่ 2 ซึ่งคำนวณดังนี้

\(\text{Psys_abs} = (\text{Wnsys}^2-w^2)^2+({w}\times(\text{Wnsys}/\text{Qsys}))^2\)

Wnsys: ความถี่ตามธรรมชาติของระบบการสั่น

Qsys: ปัจจัยคุณภาพของระบบการสั่น

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

\(\text{Loc_coeff} = \text{phone_acceleration} / \text{module_acceleration}\)

ตัวอย่างเช่น หากการเร่งตัวของโมดูลคือ 1 g และการเร่งตัวของโทรศัพท์คือ 2.5 g Loc_coeff = 2.5 ซึ่งบ่งบอกถึงการขยาย 2.5 เท่า

เฟรมเวิร์ก Android ใช้ความถี่ในหน่วยเฮิร์ตซ์ ดังนั้น HAL จึงต้องแปลงหน่วยความถี่จากเรเดียนต่อวินาทีเป็นเฮิร์ตซ์เมื่อสร้างข้อมูล FOAM

สร้างเส้นโค้ง FOAM

รวมเส้นโค้งแรงดันไฟฟ้าสูงสุด (V) เข้ากับการคำนวณการเร่งความเร็ว (M) เพื่อกำหนดเส้นโค้ง FOAM ดังนี้

  • สำหรับความถี่ (f) แต่ละความถี่ในช่วงที่ต้องการ ให้หาแรงดันไฟฟ้าสูงสุด V(f) ที่สอดคล้องกันจากเส้นโค้งแรงดันไฟฟ้าสูงสุด
  • คำนวณอัตราเร่งสูงสุดที่ความถี่นั้นโดยใช้สมการที่แสดงข้างต้น โดยแทนที่ V(f) ด้วย Vsys และแทนที่ w ด้วย f ที่เกี่ยวข้อง ซึ่งจะช่วยให้คุณได้รับ M(V(f), f)
  • อัตราเร่งที่คำนวณได้นี้คือค่า FOAM(f)

แสดงข้อมูล FOAM

หลังจากสร้างเส้นโค้ง FOAM แล้ว HAL จะแสดงเส้นโค้งเป็นรายการออบเจ็กต์ FrequencyAccelerationMapEntry แต่ละรายการจะกำหนดจุดในการแมป โดยระบุความถี่ (เป็นเฮิรตซ์) และอัตราเร่งเอาต์พุตสูงสุดที่เกี่ยวข้อง (เป็น G สูงสุด)

แม้ว่าจะไม่มีข้อกำหนดที่เข้มงวดสำหรับการแก้ปัญหา FOAM แต่เราขอแนะนำให้กำหนดเส้นโค้งที่มีจุดสูงสุด 1 จุด ระบบจะใช้เฉพาะจุดสูงสุดแรกใน API ของโฟลว์พื้นฐานเพื่อแมปเอฟเฟกต์การสั่น เราขอแนะนําให้กําหนดความละเอียดความถี่สูงบริเวณจุดสูงสุดเพื่อเพิ่มประสิทธิภาพความแม่นยําของอัตราทดแบบเชิงเส้นเมื่อกําหนดค่าความเร่งช่วงกลาง เช่น ใช้ช่วง 1 Hz ภายในช่วง +/- 10 Hz ของความถี่สูงสุด

ความสามารถและข้อจํากัดของอุปกรณ์

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

HAL API มีดังนี้

  • CAP_COMPOSE_PWLE_EFFECTS_V2: แสดงผลโดย IVibrator.getCapabilities เมื่ออุปกรณ์รองรับฟีเจอร์นี้
  • getFrequencyToOutputAccelerationMap: ดึงข้อมูล FOAM
  • getPwleV2PrimitiveDurationMinMillis: ดึงข้อมูลระยะเวลาขั้นต่ำที่อนุญาตสำหรับ PWLE พื้นฐานเป็นมิลลิวินาที
  • getPwleV2PrimitiveDurationMaxMillis: ดึงข้อมูลระยะเวลาสูงสุดที่อนุญาตสําหรับ PWLE พื้นฐานเป็นมิลลิวินาที
  • getPwleV2CompositionSizeMax: ดึงข้อมูลจำนวนสูงสุดของพรอมต์ PWLE ที่ IVibrator.composePwleV2 รองรับ

ข้อมูลนี้จะแสดงต่อนักพัฒนาแอปเพื่อให้ปรับแต่งเอฟเฟกต์ให้เหมาะกับความสามารถเฉพาะของอุปกรณ์เป้าหมายได้ โดยเฉพาะเมื่อใช้ PWLE API ขั้นสูง

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


  1. ข้อมูลเกณฑ์จะแปลงจากเกณฑ์การกระจัดในรูปที่ 1 ของ Bolanowski Jr. S. J. และคณะ "4 ช่องเป็นตัวกลางด้านกลไกของการสัมผัส" Journal of the Acoustical Society of America 84(5): 1680-1694 (1988). บทแนะนำออนไลน์นี้จะอธิบายการเปลี่ยนรูปแบบระหว่างแอมพลิจูดของการเร่งและแอมพลิจูดของการกระจัด 

  2. ข้อมูลนี้เป็นค่าประมาณจากรูปที่ 8 ใน Verrillo, R. T., et al.. "ความแรงของการรับรู้สิ่งเร้าแบบสั่นสะเทือน" Perception & Psychophysics 6: 366-372 (1969)