ใช้เอฟเฟกต์ของซองจดหมายเชิงเส้นแบบ 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 ข้อจำกัดนี้ช่วยป้องกันไม่ให้เกิดเอฟเฟกต์ไดนามิกที่ไม่พึงประสงค์ในการสั่นเนื่องจากความไม่ต่อเนื่องของแอมพลิจูด ซึ่งอาจส่งผลเสียต่อการรับรู้การสัมผัสของผู้ใช้

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

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)