เอฟเฟกต์เส้นโค้งเชิงเส้นเป็นช่วงๆ (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 ข้อจำกัดนี้ช่วยป้องกันไม่ให้เกิดเอฟเฟกต์ไดนามิกที่ไม่พึงประสงค์ในการสั่นเนื่องจากความไม่ต่อเนื่องของแอมพลิจูด ซึ่งอาจส่งผลเสียต่อการรับรู้การสัมผัสของผู้ใช้
เฟรมเวิร์กกำหนดให้อุปกรณ์ที่รองรับฟีเจอร์นี้สามารถจัดการระยะเวลาขั้นต่ำ 10 มิลลิวินาทีระหว่างจุด PWLE และจุดอย่างน้อย 16 จุดสำหรับเอฟเฟกต์ PWLE เพื่อให้มั่นใจว่าการแสดงผลเอฟเฟกต์ PWLE จะสอดคล้องกันทั่วทั้งระบบนิเวศ Android การทดสอบ 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 เดซิเบล เพื่อให้ผู้ใช้รู้สึกถึงเอฟเฟกต์การสั่นได้อย่างสม่ำเสมอ
ความแรงของการสั่นที่รับรู้ได้เทียบกับแอมพลิจูดความเร่งของการสั่น
การรับรู้ความเข้มของการสั่นสะเทือนของมนุษย์ (การวัดการรับรู้) ไม่ได้เพิ่มขึ้น เชิงเส้นตามแอมพลิจูดของการสั่นสะเทือน (พารามิเตอร์ทางกายภาพ) PWLE API สันนิษฐานว่า เมื่อดีไซเนอร์หรือนักพัฒนาซอฟต์แวร์คิดถึงการเปลี่ยนแปลงความแรงของการสั่น พวกเขาคาดหวังว่าความเข้มที่รับรู้ได้จะเป็นไปตาม PWLE ความเข้มที่รับรู้ได้ มีลักษณะตามระดับความรู้สึก (SL) ซึ่งกำหนดเป็น dB เหนือเกณฑ์การตรวจจับ ที่ความถี่เดียวกัน ดังนั้น สามารถคำนวณแอมพลิจูดความเร่งของการสั่น (ใน G peak) ได้ดังนี้
\(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)
แม้ว่าจะไม่มีข้อกำหนดที่เข้มงวดสำหรับความละเอียดของ FOAM แต่เรา ขอแนะนำให้กำหนดเส้นโค้งที่มีจุดสูงสุด 1 จุด ระบบจะใช้เฉพาะจุดสูงสุดแรก ใน Basic Envelope API เพื่อแมปเอฟเฟกต์การสั่น เราขอแนะนำให้กำหนดความละเอียดความถี่สูงรอบๆ จุดสูงสุดเพื่อเพิ่มประสิทธิภาพความแม่นยำ ของการประมาณค่าเชิงเส้นเมื่อกำหนดค่าความเร่งขั้นกลาง เช่น ใช้ขั้นละ 1 Hz ภายในช่วง +/- 10 Hz ของความถี่สูงสุด
ความสามารถและข้อจำกัดของอุปกรณ์
สำหรับ Android 16 ขึ้นไป Android มี API ของ HAL เพื่อใช้ในการค้นหาความสามารถของ PWLE ของอุปกรณ์ เพื่อช่วยให้นักพัฒนาแอปเพิ่มประสิทธิภาพเอฟเฟกต์ PWLE และรับประกันความเข้ากันได้ในอุปกรณ์ต่างๆ ซึ่งจะให้ ข้อมูลเกี่ยวกับข้อจำกัดของอุปกรณ์ เช่น ระยะเวลาขององค์ประกอบ PWLE ขั้นต่ำหรือสูงสุด และจำนวนองค์ประกอบที่อนุญาตในองค์ประกอบ PWLE
API ของ HAL มีดังนี้
CAP_COMPOSE_PWLE_EFFECTS_V2
: แสดงผลโดยIVibrator.getCapabilities
เมื่ออุปกรณ์รองรับฟีเจอร์นี้getFrequencyToOutputAccelerationMap
: ดึงข้อมูล FOAMgetPwleV2PrimitiveDurationMinMillis
: ดึงข้อมูลระยะเวลาขั้นต่ำ ที่อนุญาตสำหรับ PWLE ดั้งเดิมเป็นมิลลิวินาทีgetPwleV2PrimitiveDurationMaxMillis
: ดึงข้อมูลระยะเวลาสูงสุด ที่อนุญาตสำหรับ PWLE แบบดั้งเดิมเป็นมิลลิวินาทีgetPwleV2CompositionSizeMax
: ดึงข้อมูลจำนวนสูงสุดของ PWLE Primitive ที่IVibrator.composePwleV2
รองรับ
ข้อมูลนี้จะแสดงแก่นักพัฒนาแอปเพื่อให้ปรับแต่งเอฟเฟกต์ให้เหมาะกับ ความสามารถเฉพาะของอุปกรณ์เป้าหมาย โดยเฉพาะเมื่อใช้ PWLE API ขั้นสูง
นอกจากนี้ เฟรมเวิร์กยังใช้ API เหล่านี้เมื่อจัดการเอฟเฟกต์ที่สร้างด้วย Basic API หากเอฟเฟกต์เกินข้อจำกัดของอุปกรณ์ (เช่น มีจุด PWLE มากเกินไป หรือระยะเวลานานเกินกว่าสูงสุด) เฟรมเวิร์กจะปรับเอฟเฟกต์โดยอัตโนมัติ ให้พอดีกับขอบเขตที่อนุญาต กระบวนการปรับนี้พยายาม รักษารูปแบบและความรู้สึกดั้งเดิมของการออกแบบให้ได้มากที่สุด
-
ข้อมูลเกณฑ์จะแปลงจากเกณฑ์การเคลื่อนที่ ในรูปที่ 1 ของ Bolanowski Jr. S. J., et al.. "ช่อง 4 ช่อง เป็นสื่อกลางด้านกลไกของการสัมผัส" Journal of the Acoustical Society of America 84(5): 1680-1694 (1988) บทแนะนำออนไลน์นี้อธิบายการแปลงระหว่างความเร่ง แอมพลิจูดและแอมพลิจูดการกระจัด ↩
-
ข้อมูลนี้ประมาณจากรูปที่ 8 ใน Verrillo, R. T., et al.. "ขนาดความรู้สึกของสิ่งกระตุ้นแบบสั่น" Perception & Psychophysics 6: 366-372 (1969) ↩