این صفحه نگاشت های توصیه شده بین ثابت های HAL عمومی و ثابت های API را ارائه می دهد. اگر سختافزار ارزیابیشده ثابتهای HAL را پیادهسازی نمیکند، الگوهای بازگشتی توضیحدادهشده در صفحه پیادهسازی ثابتها و ابتداییها را برای تولید خروجیهای مشابه بهروزرسانی کنید. نقشه برداری توسط دو مدل پیش فرض مختلف کمک می شود:
مدل گسسته (ساده)
- دامنه متغیر کلیدی این مدل است. هر موجود در HAL دامنه لمسی متفاوتی را نشان می دهد.
- این مدل حداقل نیاز مورد نیاز برای پیاده سازی UX اولیه لمسی است.
- یک UX لمسی پیشرفته تر به سخت افزار پیشرفته و یک مدل پیشرفته (مدل پیوسته) نیاز دارد.
مدل پیوسته (پیشرفته)
- بافت و دامنه متغیرهای کلیدی این مدل هستند. هر موجود در HAL نشان دهنده بافت های لمسی متفاوتی است. دامنه هر موجودیت HAL توسط ضریب مقیاس (
S
) کنترل می شود. - این مدل به سخت افزار پیشرفته نیاز دارد. اگر OEM ها بخواهند از UX لمسی پیشرفته با
VibrationEffect.Composition
(برای بهترین استفاده از آخرین API های لمسی) استفاده کنند، پیاده سازی سخت افزار آنها با استفاده از این مدل توصیه می شود.
- بافت و دامنه متغیرهای کلیدی این مدل هستند. هر موجود در HAL نشان دهنده بافت های لمسی متفاوتی است. دامنه هر موجودیت HAL توسط ضریب مقیاس (
مدل گسسته
نگاشت تمام ثابت های عمومی ارائه شده در API با ثابت های HAL مناسب توصیه می شود. برای شروع این فرآیند، دریابید که دستگاه چند شکل موج لمسی با دامنه گسسته را می تواند در HAL تعریف کند. یک سوال خاص که حول این مفهوم ساختار یافته است به این صورت است: چند اثر لمسی تک ضربه ای با تفاوت های دامنه قابل درک انسان را می توان در تلفن من تعریف کرد؟ پاسخ به این سوال نقشه برداری را مشخص می کند.
تعریف ثابت های HAL یک فرآیند وابسته به سخت افزار است. به عنوان مثال، یک تلفن سطح پایه ممکن است تنها قابلیت های سخت افزاری برای تولید یک شکل موج لمسی را داشته باشد. دستگاههایی با اجزای سختافزاری پیشرفتهتر، طیف وسیعتری از سطوح دامنه گسسته را تولید میکنند و میتوانند شکل موجهای لمسی متعدد را در HAL تعریف کنند. نگاشت ثابت HAL-API ثابت HAL را می گیرد (با استفاده از دامنه متوسط به عنوان خط پایه)، سپس اثرات قوی تر یا ضعیف تر را از آنجا مرتب می کند.
شکل 14. محدوده ثابت HAL بر اساس دامنه
وقتی تعداد ثابتهای HAL با دامنه گسسته تعریف شد، زمان آن فرا میرسد که ثابتهای HAL و API را با تعداد ثابتهای HAL ترسیم کنیم. این فرآیند نگاشت میتواند یک ثابت API تکانه را به سه گروه مجزا از سطوح دامنه تقسیم کند. روشی که ثابت های API تقسیم بندی می شوند بر اساس اصول UX برای رویدادهای ورودی همراه است. برای اطلاعات بیشتر، طراحی Haptics UX را ببینید.
شکل 15. نگاشت ثابت HAL-API: مدل گسسته
اگر دستگاه شما فقط از دو ثابت HAL با دامنههای گسسته پشتیبانی میکند، ثابتهای HAL سطح دامنه متوسط و بالا را ادغام کنید. نمونه ای از این مفهوم در عمل، نگاشت EFFECT_CLICK
و EFFECT_HEAVY_CLICK
به همان ثابت HAL است که ثابت HAL سطح دامنه متوسط خواهد بود. اگر دستگاه شما فقط از یک ثابت HAL با دامنه گسسته پشتیبانی می کند، هر سه سطح را در یک سطح ادغام کنید.
مدل پیوسته
مدل پیوسته با مقیاس پذیری دامنه می تواند برای تعریف ثابت های 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 را بر اساس تعداد بافتهای لمسی مختلف که میخواهند ارائه کنند، تعریف کنند.
شکل 16. محدوده ثابت HAL بر اساس بافت (HAL_H0) و مقیاس دامنه (S)
شکل 17. نگاشت ثابت HAL-API: مدل پیوسته
در مدل پیوسته، ثابتهای HAL مختلف به جای دامنههای مختلف ، بافتهای لمسی متفاوتی را نشان میدهند. ضریب مقیاس ( S
) می تواند دامنه را پیکربندی کند. اما به دلیل اینکه درک بافت (مثلاً وضوح) با درک مدت و دامنه مرتبط است، ترکیب بافت و ضریب مقیاس (در فرآیند طراحی نقشه برداری HAL-API) توصیه می شود.
شکل 18 نگاشت ثابت را با افزایش تغییرات از یک HAL به بسیاری از ثابت های API با مقیاس پذیری دامنه نشان می دهد.
شکل 18. افزایش تنوع با مقیاس پذیری دامنه
برای همه ثابتهای API مقیاسپذیر مانند PRIMITIVE_TICK
و PRIMITIVE_CLICK
در VibrationEffect.Composition
، سطح انرژی ثابت API به پارامتر float scale
بستگی دارد زمانی که ثابت API از طریق addPrimitive(int primitiveID, float scale, int delay)
اعلام میشود. PRIMITIVE_TICK
و PRIMITIVE_CLICK
را می توان با یک تمایز واضح با استفاده از ثابت های مختلف HAL طراحی کرد. اگر می خواهید تنوعی به بافت اضافه کنید، این رویکرد توصیه می شود.