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

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

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

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

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

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

Basic 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 เฟรมเวิร์กกำหนดให้อุปกรณ์ที่รองรับฟีเจอร์นี้สามารถจัดการระยะเวลาขั้นต่ำ 20 มิลลิวินาทีระหว่างจุด PWLE และจุดอย่างน้อย 16 จุดสำหรับเอฟเฟกต์ PWLE การทดสอบ VTS จะบังคับใช้ข้อกำหนดเหล่านี้ ซึ่งจะช่วยให้มั่นใจได้ว่า เอฟเฟกต์ PWLE จะเชื่อถือได้ในอุปกรณ์ Android

Advanced PWLE API

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

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

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

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 peak) ที่ความถี่นั้น แผนที่นี้มีความสำคัญอย่างยิ่งต่อการ ทำความเข้าใจว่าเอาต์พุตการสั่นแตกต่างกันอย่างไรสำหรับช่วงความถี่ที่รองรับ และ สำหรับการกำหนด API PWLE พื้นฐาน

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

ตัวอย่าง
โฟม

รูปที่ 1 ตัวอย่าง FOAM สำหรับแอคทูเอเตอร์เรโซแนนซ์ทั่วไป

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

การรับรู้ความเข้มของการสั่นสะเทือนของมนุษย์ (มาตรวัดการรับรู้) ไม่ได้เพิ่มขึ้น เชิงเส้นตามแอมพลิจูดของการสั่นสะเทือน (พารามิเตอร์ทางกายภาพ) PWLE API สันนิษฐานว่า เมื่อนักออกแบบหรือนักพัฒนาซอฟต์แวร์คิดถึงการเปลี่ยนแปลงความแรงของการสั่น พวกเขาคาดหวังว่าความเข้มที่รับรู้ได้จะเป็นไปตาม PWLE ความเข้มที่รับรู้ได้ มีลักษณะเป็นระดับความรู้สึก (SL) ซึ่งกำหนดเป็นเดซิเบลเหนือเกณฑ์การตรวจจับ ที่ความถี่เดียวกัน ดังนั้น สามารถคำนวณแอมพลิจูดความเร่งของการสั่น (ใน จุดสูงสุดของ 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 peak

สมการหลักที่ใช้สําหรับ 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 และ f ที่เกี่ยวข้องด้วย w ซึ่งจะช่วยให้คุณM(V(f), f)
  • ความเร่งที่คำนวณนี้คือค่า FOAM(f)

เปิดเผยข้อมูล FOAM

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

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

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

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

HAL API ประกอบด้วย

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

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

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


  1. ข้อมูลเกณฑ์จะแปลงจากเกณฑ์การกระจัด ในรูปที่ 1 ของ Bolanowski Jr. S. J., et al.. "ช่อง 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)