این صفحه نگاشتهای توصیهشده بین ثابتهای عمومی HAL و ثابتهای API را ارائه میدهد. اگر سختافزار ارزیابیشده ثابتهای HAL را پیادهسازی نمیکند، الگوهای بازگشتی شرحدادهشده در صفحه پیادهسازی ثابتها و عناصر اولیه را بهروز کنید تا بروندادهای مشابهی تولید شود. این نگاشت با کمک دو مدل پیشفرض مختلف انجام میشود:
مدل گسسته (ساده)
- دامنه متغیر کلیدی این مدل است. هر موجودیت در HAL نشاندهنده دامنه لمسی متفاوتی است.
- این مدل حداقل شرط لازم برای پیادهسازی «تجربه کاربری» لمسی پایه است.
- «تجربه کاربری لمسی» پیشرفتهتر به سختافزار پیشرفته و مدل پیشرفته (مدل پیوسته) نیاز دارد.
مدل پیوسته (پیشرفته)
- بافت و دامنه متغیرهای کلیدی این مدل هستند. هر موجودیت
در HAL نشاندهنده بافتهای لمسی مختلف است. دامنه هر
نهاد HAL توسط عامل مقیاس (
S) کنترل میشود. - این مدل به سختافزار پیشرفته نیاز دارد. اگر سازندگان تجهیزات اصلی بخواهند از تجربه کاربری لمسی پیشرفته با
VibrationEffect.Compositionاستفاده کنند (برای بهترین استفاده از جدیدترین میاناهای برنامهسازی کاربردی لمسی)، توصیه میشود سختافزارشان را بااستفاده از این مدل پیادهسازی کنند.
- بافت و دامنه متغیرهای کلیدی این مدل هستند. هر موجودیت
در HAL نشاندهنده بافتهای لمسی مختلف است. دامنه هر
نهاد HAL توسط عامل مقیاس (
مدل گسسته
توصیه میشود همه ثابتهای عمومی ارائهشده در API با ثابتهای HAL مناسب نگاشت شوند. برای شروع این فرایند، ببینید دستگاه چند شکل موج لمسی با دامنه گسسته میتواند در HAL تعریف کند. پرسشی مشخص که حول این مفهوم ساختار یافته باشد به این شکل است: چند اثر لمسی تکضرب با تفاوتهای دامنه قابلدرک برای انسان را میتوان در تلفنم تعریف کرد؟ پاسخ این سؤال تعیینکننده نگاشت است.
تعریف کردن ثابتهای HAL فرایندی وابسته به سختافزار است. برای مثال، یک تلفن سطح پایه ممکن است فقط قابلیتهای سختافزاری برای تولید یک شکل موج لمسی واحد را داشته باشد. دستگاههایی که اجزای سختافزاری پیشرفتهتری دارند طیف وسیعتری از سطوح دامنه مجزا تولید میکنند و میتوانند چندین شکل موج لمسی را در HAL تعریف کنند. نگاشت ثابت HAL-API ثابت HAL را (بااستفاده از دامنه متوسط بهعنوان خط پایه) میگیرد، سپس جلوههای قویتر یا ضعیفتر را از آنجا مرتب میکند.
شکل ۱. محدوده ثابت HAL براساس دامنه.
وقتی تعداد ثابتهای HAL با دامنه گسسته تعریف میشود، زمان آن است که ثابتهای HAL و API را براساس تعداد ثابتهای HAL نگاشت کنید. این فرایند نگاشت میتواند یک ثابت API تکضرب را به حداکثر سه گروه مجزای سطوح دامنه تقسیم کند. روش تقسیمبندی ثابتهای API براساس اصول تجربه کاربری برای رویدادهای ورودی همراه است. برای اطلاعات بیشتر، Haptics طراحی تجربه کاربری را ببینید.
شکل ۲. نگاشت ثابت 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) همانطور که در شکل ۳ نشان داده شده است، نگاشت میشود. بااستفاده از مقیاسپذیری دامنه مدل پیوسته، دستگاه میتواند تعداد کمی ثابت HAL با بافتهای متمایز ذخیره کند و با تنظیم عامل مقیاس (S)، تغییرات دامنه را اضافه کند. سازندگان دستگاه میتوانند تعداد ثابتهای HAL را براساس تعداد بافتهای لمسی مختلفی که میخواهند ارائه دهند تعریف کنند.
شکل ۳. محدوده ثابت HAL براساس بافت (HAL_H0) و مقیاس دامنه (S).
شکل ۴. نگاشت ثابت HAL-API: مدل پیوسته.
در مدل پیوسته، ثابتهای مختلف HAL نشاندهنده
بافتهای مختلف لمسی هستند نه دامنههای مختلف؛ عامل مقیاس (S) میتواند
دامنه را پیکربندی کند. بااینحال، چون درک بافت (برای مثال، وضوح) با درک مدت و دامنه مرتبط است، ترکیب بافت و ضریب مقیاس (در فرایند طراحی نگاشت HAL-API) توصیه میشود.
شکل ۵ نگاشت ثابت را با افزایش تنوع از یک HAL به بسیاری از ثابتهای API با مقیاسپذیری دامنه نشان میدهد.
شکل ۵. افزایش تنوع با مقیاسپذیری دامنه.
برای همه ثابتهای «میانای برنامهسازی کاربردی» مقیاسپذیر مثل PRIMITIVE_TICK و PRIMITIVE_CLICK در
VibrationEffect.Composition،
سطح انرژی ثابت «میانای برنامهسازی کاربردی» به پارامتر float scale بستگی دارد وقتی
ثابت «میانای برنامهسازی کاربردی» ازطریق addPrimitive(int primitiveID, float scale,
int delay) اعلام میشود. بااستفاده از ثابتهای مختلف «لایه انتزاعی سختافزار»، میتوان PRIMITIVE_TICK و PRIMITIVE_CLICK را با تمایز واضحی طراحی کرد. اگر میخواهید به بافت تنوع اضافه کنید، این رویکرد توصیه میشود.