انواع حسگر

این بخش محورهای حسگر، حسگرهای پایه، و حسگرهای ترکیبی (فعالیت، وضعیت، کالیبره‌نشده، و تعامل) را توضیح می‌دهد.

محورهای حسگر

مقادیر رویداد حسگر از بسیاری از حسگرها در چارچوب خاصی بیان می‌شود که نسبت‌به دستگاه ایستا است.

محورهای دستگاه همراه

«میانای برنامه‌سازی کاربردی حسگر» فقط نسبت به جهت طبیعی صفحه‌نمایش است (وقتی جهت صفحه‌نمایش دستگاه تغییر می‌کند، محورها جابه‌جا نمی‌شوند.

سیستم هماهنگی
میانای برنامه‌سازی کاربردی حسگر برای دستگاه‌های همراه

شکل ۱. سیستم مختصات (نسبت به دستگاه همراه) که «میانای برنامه‌سازی کاربردی حسگر» استفاده می‌کند

محورهای خودرو

در پیاده‌سازی‌های Android Automotive، محورها نسبت‌به قاب بدنه خودرو تعریف می‌شوند. مبدأ قاب مرجع خودرو مرکز محور عقب است. چارچوب مرجع خودرو به‌گونه‌ای جهت‌گیری شده است که:

  • محور X به سمت راست اشاره می‌کند و در صفحه افقی، عمود بر صفحه تقارن خودرو قرار دارد.
  • محور Y به جلو اشاره می‌کند و در صفحه افقی قرار دارد.
سیستم مختصات میانای برنامه‌سازی کاربردی حسگر برای
دستگاه‌های خودرویی

شکل ۲. سیستم مختصات (نسبت به دستگاه خودرو) که توسط Sensor API استفاده می‌شود

قاب مرجع خودرو یک سیستم مختصات راست‌دست است. بنابراین، محور Z به‌سمت بالا اشاره می‌کند.

محور Z چارچوب مرجع با جاذبه هم‌راستا است، به این معنی که محور X و محور Y هر دو افقی هستند. در نتیجه، محور Y ممکن است همیشه از محور جلویی عبور نکند.

حسگرهای پایه

انواع حسگرهای پایه براساس حسگرهای فیزیکی‌ای که نشان می‌دهند نام‌گذاری می‌شوند. این حسگرها داده‌ها را از یک حسگر فیزیکی واحد منتقل می‌کنند (برخلاف حسگرهای ترکیبی که داده‌ها را از حسگرهای دیگر تولید می‌کنند). نمونه‌هایی از انواع حسگر پایه شامل موارد زیر می‌شود:

  • SENSOR_TYPE_ACCELEROMETER
  • SENSOR_TYPE_GYROSCOPE
  • SENSOR_TYPE_MAGNETOMETER

بااین‌حال، حسگرهای پایه با حسگر فیزیکی زیرین آن‌ها برابر نیستند و نباید با آن اشتباه گرفته شوند. داده‌های حسگر پایه، خروجی خام حسگر فیزیکی نیست، زیرا اصلاحاتی (مانند جبران سوگیری و جبران دما) اعمال می‌شود.

برای مثال، مشخصات حسگر پایه ممکن است در موارد استفاده زیر با مشخصات حسگر فیزیکی زیرین آن متفاوت باشد:

  • تراشه ژیروسکوپ با محدوده سوگیری ۱ درجه در ثانیه.
    • پس‌از کالیبراسیون کارخانه‌ای، جبران دما و جبران انحراف اعمال می‌شود، انحراف واقعی حسگر Android کاهش می‌یابد، ممکن است به نقطه‌ای برسد که انحراف تضمین شود کمتر از ۰٫۰۱ درجه/ثانیه باشد.
    • در این وضعیت، می‌گوییم که حسگر Android دارای انحرافی کمتر از ۰٫۰۱ درجه/ثانیه است، حتی اگر برگه داده حسگر زیرین گفته باشد ۱ درجه/ثانیه.
  • فشارسنجی با مصرف برق ۱۰۰ میکرووات.
    • ازآنجایی‌که داده‌های تولیدشده باید از تراشه به SoC منتقل شود، هزینه توان واقعی برای جمع‌آوری داده‌ها از حسگر فشارسنج Android ممکن است بسیار بیشتر باشد، برای مثال ۱۰۰۰ میکرووات.
    • در این وضعیت، می‌گوییم که حسگر Android مصرف برق ۱۰۰۰ میکرووات دارد، حتی اگر مصرف برق اندازه‌گیری‌شده در پایه‌های تراشه فشارسنج ۱۰۰ میکرووات باشد.
  • مغناطیس‌سنجی که وقتی کالیبره می‌شود ۱۰۰ میکرووات مصرف می‌کند، اما هنگام کالیبره شدن بیشتر مصرف می‌کند.
    • روال کالیبراسیون آن ممکن است به فعال کردن ژیروسکوپ نیاز داشته باشد، که ۵۰۰۰ میکرووات مصرف می‌کند، و اجرای برخی الگوریتم‌ها که ۹۰۰ میکرووات دیگر هزینه دارد.
    • در این وضعیت، می‌گوییم حداکثر مصرف برق حسگر Android (مغناطیس‌سنج) ۶۰۰۰ میکرووات است.
    • در این مورد، میانگین مصرف برق معیار مفیدتری است و این معیار ازطریق لایه انتزاعی سخت‌افزار در مشخصات ایستا حسگر گزارش می‌شود.

شتاب‌سنج

حالت گزارش‌دهی: پیوسته

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER) حسگر غیربیدارکننده برمی‌گرداند

حسگر شتاب‌سنج شتاب دستگاه را در امتداد سه محور حسگر گزارش می‌کند. شتاب اندازه‌گیری‌شده شامل هم شتاب فیزیکی (تغییر سرعت) و هم گرانش است. این اندازه‌گیری در فیلدهای x، y، و z از sensors_event_t.acceleration گزارش می‌شود.

همه مقادیر در واحدهای SI (متر بر مجذور ثانیه) هستند و شتاب دستگاه را منهای نیروی جاذبه در امتداد سه محور حسگر اندازه‌گیری می‌کنند.

در اینجا چند مثال آورده شده است:

  • هنگام سقوط آزاد، مقدار نرمال (x،‏ y،‏ z) باید نزدیک به ۰ باشد.
  • وقتی دستگاه به‌صورت افقی روی میز قرار می‌گیرد و از سمت چپ به‌سمت راست هل داده می‌شود، مقدار شتاب x مثبت است.
  • وقتی دستگاه به‌صورت افقی روی میز قرار می‌گیرد، مقدار شتاب در امتداد محور z برابر با +۹٫۸۱ است که معادل شتاب دستگاه (۰ متر بر ثانیه مربع) منهای نیروی گرانش (-۹٫۸۱ متر بر ثانیه مربع) است.
  • وقتی دستگاه به‌صورت صاف روی میز قرار دارد و به‌سمت بالا هل داده می‌شود، مقدار شتاب بیشتر از ‎+۹٫۸۱ است که با شتاب دستگاه (‎+A m/s^2) منهای نیروی گرانش (‎-۹٫۸۱ m/s^2) مطابقت دارد.

قرائت‌ها بااستفاده از این موارد کالیبره می‌شوند:

  • جبران دما
  • هم‌سو کردن انحراف آنلاین
  • هم‌سو کردن ترازوی آنلاین

انحراف و کالیبراسیون مقیاس فقط باید زمانی به‌روزرسانی شود که حسگر غیرفعال است، تا از ایجاد جهش در مقادیر درطول جاری‌سازی جلوگیری شود.

شتاب‌سنج همچنین میزان دقت موردانتظار برای خوانش‌هایش را ازطریق sensors_event_t.acceleration.status گزارش می‌دهد. برای اطلاعات بیشتر درباره مقادیر ممکن برای این فیلد، ثابت‌های SensorManager SENSOR_STATUS_* را ببینید.

دمای محیط

حالت گزارش‌دهی: درصورت تغییر

getDefaultSensor(SENSOR_TYPE_AMBIENT_TEMPERATURE) حسگر غیربیدارکننده برمی‌گرداند

این حسگر دمای محیط (اتاق) را به درجه سلسیوس ارائه می‌دهد.

حسگر میدان مغناطیسی

حالت گزارش‌دهی: مداوم

getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD) حسگر غیربیدارباش را برمی‌گرداند

SENSOR_TYPE_GEOMAGNETIC_FIELD == SENSOR_TYPE_MAGNETIC_FIELD

حسگر میدان مغناطیسی (که مغناطیس‌سنج نیز نامیده می‌شود) میدان مغناطیسی محیط را همان‌طور که در سه محور حسگر اندازه‌گیری شده است گزارش می‌کند.

این اندازه‌گیری در فیلدهای x،‏ y، و z از sensors_event_t.magnetic گزارش می‌شود و همه مقادیر برحسب میکروتسلا (uT) است.

مغناطیس‌سنج همچنین ازطریق sensors_event_t.magnetic.status میزان دقت موردانتظار برای خوانش‌هایش را گزارش می‌دهد. برای اطلاعات بیشتر درباره مقادیر احتمالی این فیلد، ثابت‌های SENSOR_STATUS_* SensorManager را ببینید.

قرائت‌ها بااستفاده از این موارد کالیبره می‌شوند:

  • جبران دما
  • واسنجی آهن نرم کارخانه‌ای (یا آنلاین)
  • واسنجی آهن سخت آنلاین

ژیروسکوپ

حالت گزارش‌دهی: مداوم

getDefaultSensor(SENSOR_TYPE_GYROSCOPE) حسگر غیربیدارکننده برمی‌گرداند

حسگر ژیروسکوپ نرخ چرخش دستگاه را در اطراف سه محور حسگر گزارش می‌کند.

چرخش در جهت پادساعت‌گرد مثبت است (قانون دست راست). یعنی اگر ناظری از مکانی مثبت در محور x،‏ y، یا z به دستگاهی که در مبدأ قرار دارد نگاه کند، اگر دستگاه به‌نظر برسد که در جهت پادساعت‌گرد می‌چرخد، چرخش مثبت گزارش می‌کند. توجه داشته باشید که این تعریف استاندارد ریاضیاتی چرخش مثبت است و با تعریف هوافضایی چرخش موافق نیست.

این اندازه‌گیری در فیلدهای x،‏ y، و z مربوط به sensors_event_t.gyro گزارش می‌شود و همه مقادیر برحسب رادیان بر ثانیه (rad/s) هستند.

قرائت‌ها بااستفاده از این موارد کالیبره می‌شوند:

  • جبران دما
  • جبران مقیاس کارخانه‌ای (یا آنلاین)
  • هم‌سو کردن انحراف آنلاین (برای حذف انحراف)

ژیروسکوپ همچنین ازطریق sensors_event_t.gyro.status گزارش می‌دهد که انتظار دارد خوانش‌هایش چقدر دقیق باشد. برای اطلاعات بیشتر درباره مقادیر ممکن برای این فیلد، ثابت‌های SensorManager SENSOR_STATUS_* را ببینید.

ژیروسکوپ را نمی‌توان براساس مغناطیس‌سنج‌ها و شتاب‌سنج‌ها شبیه‌سازی کرد، زیرا این کار باعث کاهش سازگاری و پاسخ‌دهی محلی آن می‌شود. باید براساس تراشه ژیروسکوپ معمولی باشد.

ضربان قلب

حالت گزارش‌دهی: هنگام تغییر

getDefaultSensor(SENSOR_TYPE_HEART_RATE) حسگر غیرفعال‌کننده را برمی‌گرداند

حسگر ضربان قلب، ضربان قلب فعلی فردی را که دستگاه را لمس می‌کند گزارش می‌دهد.

ضربان قلب فعلی براساس تعداد ضربان در دقیقه (BPM) در sensors_event_t.heart_rate.bpm و وضعیت حسگر در sensors_event_t.heart_rate.status گزارش می‌شود. برای اطلاعات بیشتر درباره مقادیر ممکن برای این فیلد، ثابت‌های SENSOR_STATUS_* SensorManager را ببینید. به‌ویژه، پس‌از اولین فعال‌سازی، فیلد وضعیت اولین رویداد باید روی SENSOR_STATUS_UNRELIABLE تنظیم شود، مگراینکه مشخص باشد دستگاه روی بدن نیست. چون این حسگر در حالت تغییر است، رویدادها زمانی و فقط زمانی تولید می‌شوند که heart_rate.bpm یا heart_rate.status از زمان رویداد قبلی تغییر کرده باشد. رویدادها سریع‌تر از هر sampling_period تولید نمی‌شوند.

چارچوب به‌طور خودکار sensor_t.requiredPermission را به اجازه مناسب برای حفظ سازگاری ملغی می‌کند. این چارچوب از اجازه SENSOR_PERMISSION_READ_HEART_RATE برای Android 16 و بالاتر، و از اجازه SENSOR_PERMISSION_BODY_SENSORS برای Android 15 و پایین‌تر استفاده می‌کند.

روشن

حالت گزارش‌دهی: درصورت تغییر

getDefaultSensor(SENSOR_TYPE_LIGHT) حسگر غیرفعال‌کننده را برمی‌گرداند

حسگر نور، روشنایی فعلی را در واحدهای لوکس SI گزارش می‌کند.

اندازه‌گیری در sensors_event_t.light گزارش می‌شود.

مجاورت

حالت گزارش‌دهی: درصورت تغییر

معمولاً به‌عنوان حسگر بیدار شدن تعریف می‌شود

getDefaultSensor(SENSOR_TYPE_PROXIMITY) حسگر بیدار شدن را برمی‌گرداند

حسگر مجاورت فاصله بین حسگر و نزدیک‌ترین سطح قابل‌مشاهده را گزارش می‌کند.

تا Android 4.4، حسگرهای مجاورت همیشه حسگرهای بیدارباش بودند و وقتی تغییری در مجاورت تشخیص می‌دادند، SoC را بیدار می‌کردند. بعداز Android 4.4، توصیه می‌کنیم ابتدا نسخه بیدارباش این حسگر را پیاده‌سازی کنید، زیرا این همان نسخه‌ای است که برای روشن و خاموش کردن صفحه‌نمایش هنگام برقراری تماس‌های تلفنی استفاده می‌شود.

اندازه به سانتی‌متر در sensors_event_t.distance گزارش شده است. توجه داشته باشید که برخی‌از حسگرهای مجاورت فقط از اندازه‌گیری دوتایی «نزدیک» یا «دور» پشتیبانی می‌کنند. در این حالت، حسگر مقدار sensor_t.maxRange را در حالت «دور» و مقداری کمتر از sensor_t.maxRange را در حالت «نزدیک» گزارش می‌کند.

فشار

حالت گزارش‌دهی: پیوسته

getDefaultSensor(SENSOR_TYPE_PRESSURE) حسگر غیرفعال‌کننده را برمی‌گرداند

حسگر فشار (که فشارسنج نیز نامیده می‌شود) فشار اتمسفر را برحسب هکتوپاسکال (hPa) گزارش می‌دهد.

خوانش‌ها بااستفاده از

  • جبران دما
  • واسنجی انحراف کارخانه
  • واسنجی ترازوی کارخانه

فشارسنج اغلب برای تخمین تغییرات ارتفاع استفاده می‌شود. برای تخمین ارتفاع مطلق، فشار سطح دریا (که بسته به آب‌وهوا تغییر می‌کند) باید به‌عنوان مرجع استفاده شود.

رطوبت نسبی

حالت گزارش‌دهی: درصورت تغییر

getDefaultSensor(SENSOR_TYPE_RELATIVE_HUMIDITY) حسگر غیربیدارباش را برمی‌گرداند

حسگر رطوبت نسبی رطوبت نسبی هوای محیط را اندازه‌گیری می‌کند و مقدار آن را به‌صورت درصد برمی‌گرداند.

انواع حسگر ترکیبی

حسگر ترکیبی با پردازش و/یا ترکیب داده‌های یک یا چند حسگر فیزیکی، داده تولید می‌کند. حسگرهای ترکیبی را حسگرهای مجازی یا نرم‌افزاری نیز می‌نامند. (هر حسگری که حسگر پایه نباشد حسگر مرکب نامیده می‌شود.) نمونه‌هایی از حسگرهای ترکیبی عبارت‌اند از:

  • تشخیص‌دهنده گام و حرکت قابل‌توجه که معمولاً براساس شتاب‌سنج هستند، اما اگر مصرف برق و دقت قابل‌قبول باشد، می‌توانند براساس حسگرهای دیگر نیز باشند.
  • بردار چرخش بازی، براساس شتاب‌سنج و ژیروسکوپ.
  • ژیروسکوپ واسنجی‌نشده، که شبیه به حسگر پایه ژیروسکوپ است، اما با این تفاوت که واسنجی انحراف به‌صورت جداگانه گزارش می‌شود به‌جای اینکه در اندازه‌گیری اصلاح شود.

همانند حسگرهای پایه، ویژگی‌های حسگرهای ترکیبی از ویژگی‌های داده‌های نهایی آن‌ها ناشی می‌شود. برای مثال، مصرف برق بردار چرخش بازی احتمالاً برابر با مجموع مصرف برق تراشه شتاب‌سنج، تراشه ژیروسکوپ، تراشه پردازش داده‌ها، و گذرگاه‌های انتقال داده‌ها است. به‌عنوان مثالی دیگر، رانش بردار چرخش بازی به همان اندازه که به ویژگی‌های فیزیکی حسگر بستگی دارد، به کیفیت الگوریتم واسنجی نیز وابسته است.

جدول زیر انواع حسگر ترکیبی دردسترس را فهرست می‌کند. هر حسگر ترکیبی به داده‌های یک یا چند حسگر فیزیکی متکی است. از انتخاب حسگرهای فیزیکی زیربنایی دیگر برای تخمین نتایج خودداری کنید زیرا تجربه کاربری ضعیفی ارائه می‌دهند.

نوع حسگر دسته حسگرهای فیزیکی زیرین حالت گزارش‌دهی

بردار چرخش بازی

نگرش

شتاب‌سنج، ژیروسکوپ، نباید از مغناطیس‌سنج استفاده شود

پیوسته

بردار چرخش ژئومغناطیسی حسگر کم‌مصرف

نگرش

شتاب‌سنج، مغناطیس‌سنج، نباید از ژیروسکوپ استفاده کند

پیوسته

اشاره نگاه سریع حسگر کم‌مصرف

تعامل

تعریف‌نشده

یک‌ضرب

جاذبه

نگرش

شتاب‌سنج، ژیروسکوپ (درصورت وجود)، یا مغناطیس‌سنج (درصورت عدم وجود ژیروسکوپ)

پیوسته

ژیروسکوپ واسنجی‌نشده

کالیبره‌نشده

ژیروسکوپ

پیوسته

شتاب خطی

فعالیت

شتاب‌سنج، ژیروسکوپ (درصورت وجود)، یا مغناطیس‌سنج (درصورت عدم وجود ژیروسکوپ)

پیوسته

میدان مغناطیسی تنظیم‌نشده

کالیبره‌نشده

مغناطیس‌سنج

پیوسته

جهت (منسوخ‌شده)

نگرش

شتاب‌سنج، مغناطیس‌سنج، ژیروسکوپ (درصورت وجود)

پیوسته

اشاره برداشتن حسگر کم‌مصرف

تعامل

تعریف‌نشده

یک‌ضرب

بردار چرخش

نگرش

شتاب‌سنج، مغناطیس‌سنج، ژیروسکوپ (درصورت وجود)

پیوسته

حرکت قابل‌توجه حسگر کم‌مصرف

فعالیت

شتاب‌سنج (یا حسگر دیگری که مصرف انرژی بسیار کمی داشته باشد)

یک‌باره

گام‌شمار حسگر کم‌مصرف

فعالیت

شتاب‌سنج

هنگام تغییر

تشخیص‌دهنده گام حسگر کم‌مصرف

فعالیت

شتاب‌سنج

ویژه

آشکارساز کجی حسگر کم‌مصرف

فعالیت

شتاب‌سنج

ویژه

اشاره بیدار کردن حسگر کم‌مصرف

تعامل

تعریف‌نشده

یک‌باره

حسگر کم‌مصرف = حسگر کم‌مصرف

حسگرهای ترکیبی فعالیت

شتاب خطی

حسگرهای فیزیکی زیربنایی: شتاب‌سنج و (درصورت وجود) ژیروسکوپ (یا مغناطیس‌سنج درصورت عدم وجود ژیروسکوپ)

حالت گزارش‌دهی: مداوم

getDefaultSensor(SENSOR_TYPE_LINEAR_ACCELERATION) حسگر غیربیدارباش را برمی‌گرداند

حسگر شتاب خطی، شتاب خطی دستگاه را در قاب حسگر گزارش می‌کند، بدون احتساب گرانش.

ازنظر مفهومی، برونداد عبارت است از: برونداد شتاب‌سنج منهای برونداد حسگر گرانش. این مقدار در فیلدهای x،‏ y، و z در sensors_event_t.acceleration برحسب متر بر ثانیه مربع گزارش می‌شود.

وقتی دستگاه بی‌حرکت است، مقادیر در همه محورها باید نزدیک به ۰ باشد.

اگر دستگاه ژیروسکوپ داشته باشد، حسگر شتاب خطی باید از ژیروسکوپ و شتاب‌سنج به‌عنوان ورودی استفاده کند.

اگر دستگاه ژیروسکوپ نداشته باشد، حسگر شتاب خطی باید از شتاب‌سنج و مغناطیس‌سنج به‌عنوان ورودی استفاده کند.

حرکت قابل‌توجه

حسگر فیزیکی زیرین: شتاب‌سنج (یا حسگر دیگری که مصرف برق پایینی داشته باشد)

حالت گزارش‌دهی: تک‌ضرب

برق ضعیف است

فقط نسخه بیدارباش این حسگر را پیاده‌سازی کنید.

getDefaultSensor(SENSOR_TYPE_SIGNIFICANT_MOTION) حسگر بیدار شدن را برمی‌گرداند

وقتی حرکت قابل‌توجهی تشخیص داده شود، آشکارساز حرکت قابل‌توجه راه‌اندازی می‌شود: حرکتی که ممکن است منجر به تغییر مکان کاربر شود.

نمونه‌هایی از چنین حرکت‌های مهم عبارت‌اند از:

  • پیاده‌روی یا دوچرخه‌سواری
  • نشستن در خودرو، اتوبوس، یا قطار درحال حرکت

نمونه‌هایی از موقعیت‌هایی که باعث حرکت قابل‌توجه نمی‌شوند:

  • تلفن در جیب است و فرد حرکت نمی‌کند
  • تلفن روی میز است و میز به‌دلیل ترافیک نزدیک یا ماشین لباس‌شویی کمی می‌لرزد

در سطح بالا، از آشکارساز حرکت قابل‌توجه برای کاهش مصرف انرژی تعیین مکان استفاده می‌شود. وقتی الگوریتم‌های بومی‌سازی تشخیص دهند که دستگاه ثابت است، می‌توانند به حالت کم‌مصرف بروند، که در آن برای بیدار کردن دستگاه هنگام تغییر مکان کاربر، به حرکت‌های قابل‌توجه تکیه می‌کنند.

این حسگر باید کم‌مصرف باشد. این ویژگی برای مصرف برق مصالحه‌ای انجام می‌دهد که ممکن است منجر به تعداد کمی منفی کاذب شود. این کار به چند دلیل انجام می‌شود:

  • هدف این حسگر صرفه‌جویی در مصرف باتری است.
  • راه‌اندازی رویداد وقتی کاربر درحال حرکت نیست (مثبت کاذب) ازنظر مصرف انرژی پرهزینه است، بنابراین باید از آن اجتناب شود.
  • عدم راه‌اندازی رویداد وقتی کاربر درحال حرکت است (منفی کاذب) تا زمانی که مکرراً انجام نشود قابل‌قبول است. اگر کاربر به‌مدت ۱۰ ثانیه درحال راه رفتن بوده است، عدم راه‌اندازی رویداد در آن ۱۰ ثانیه قابل‌قبول نیست.

هر رویداد حسگر 1 را در sensors_event_t.data[0] گزارش می‌کند.

گام‌شمار

حسگر فیزیکی زیربنایی: شتاب‌سنج (+ احتمالاً حسگرهای دیگر تا زمانی که کم‌مصرف باشند)

حالت گزارش‌دهی: ویژه (یک رویداد برای هر مرحله طی‌شده)

برق ضعیف است

getDefaultSensor(SENSOR_TYPE_STEP_DETECTOR) حسگر غیربیدارکننده برمی‌گرداند

هر بار که کاربر قدم برمی‌دارد، آشکارساز گام رویدادی تولید می‌کند.

مُهر زمان رویداد sensors_event_t.timestamp مربوط به زمانی است که پا به زمین می‌رسد و تغییرات زیادی در شتاب ایجاد می‌کند.

در مقایسه با شمارشگر گام، آشکارساز گام باید تأخیر کمتری داشته باشد (کمتر از دو ثانیه). هم گام‌سنج و هم شمارشگر گام زمانی را که کاربر درحال راه رفتن، دویدن، و بالا رفتن از پله است تشخیص می‌دهند. وقتی کاربر درحال دوچرخه‌سواری، رانندگی، یا در سایر وسایل نقلیه است نباید راه‌اندازی شوند.

این حسگر باید کم‌مصرف باشد. یعنی اگر تشخیص گام در سخت‌افزار انجام نشود، این حسگر نباید تعریف شود. به‌طور خاص، وقتی آشکارساز گام فعال است و شتاب‌سنج فعال نیست، فقط گام‌ها باید باعث وقفه شوند (نه هر خوانش شتاب‌سنج).

‫sampling_period_ns هیچ تأثیری بر ردیاب‌های گام ندارد.

هر رویداد حسگر 1 را در sensors_event_t.data[0] گزارش می‌کند.

گام‌شمار

حسگر فیزیکی زیربنایی: شتاب‌سنج (+ احتمالاً حسگرهای دیگر تا زمانی که توان پایین باشد)

Reporting-mode: On-change

کم‌مصرف

getDefaultSensor(SENSOR_TYPE_STEP_COUNTER) حسگر غیربیدارکننده برمی‌گرداند

گام‌شمار تعداد گام‌های برداشته‌شده توسط کاربر را از آخرین راه‌اندازی مجدد درحین فعال بودن گزارش می‌کند.

این اندازه‌گیری به‌صورت uint64_t در sensors_event_t.step_counter گزارش می‌شود و فقط با بازراه‌اندازی سیستم به صفر بازنشانی می‌شود.

مُهر زمان رویداد روی زمانی تنظیم می‌شود که آخرین مرحله برای آن رویداد انجام شده است.

برای اطلاع از اهمیت زمان گام، نوع حسگر تشخیص‌دهنده گام را ببینید.

در مقایسه با ردیاب گام، شمارشگر گام می‌تواند تأخیر بیشتری داشته باشد (تا ۱۰ ثانیه). به‌لطف این تأخیر، این حسگر دقت بالایی دارد؛ تعداد قدم‌ها پس‌از یک روز کامل اندازه‌گیری باید در محدوده ۱۰٪ از تعداد قدم‌های واقعی باشد. هم گام‌سنج و هم گام‌شمار زمانی را که کاربر درحال راه رفتن، دویدن، و بالا رفتن از پله است تشخیص می‌دهند. وقتی کاربر درحال دوچرخه‌سواری، رانندگی، یا در سایر وسایل نقلیه است، نباید راه‌اندازی شوند.

سخت‌افزار باید اطمینان حاصل کند که تعداد گام‌های داخلی هرگز سرریز نمی‌شود. حداقل اندازه شمارنده داخلی سخت‌افزار باید ۱۶ بیت باشد. درصورت سرریز قریب‌الوقوع (حداکثر هر ۲^۱۶ گام)، SoC می‌تواند بیدار شود تا درایور بتواند شمارنده را نگهداری کند.

همان‌طور که در بخش تعامل ذکر شده است، درحالی‌که این حسگر کار می‌کند، نباید در عملکرد هیچ حسگر دیگری، به‌ویژه شتاب‌سنج، که ممکن است درحال استفاده باشد، اختلال ایجاد کند.

اگر دستگاه خاصی نتواند از این حالت‌های عملکرد پشتیبانی کند، این نوع حسگر نباید توسط لایه انتزاع سخت‌افزار گزارش شود. یعنی «شبیه‌سازی» این حسگر در HAL قابل‌قبول نیست.

این حسگر باید کم‌مصرف باشد. یعنی اگر تشخیص گام در سخت‌افزار امکان‌پذیر نباشد، این حسگر نباید تعریف شود. به‌طور دقیق‌تر، وقتی گام‌شمار فعال است و شتاب‌سنج فعال نیست، فقط گام‌ها باید باعث ایجاد وقفه‌ها شوند (نه داده‌های شتاب‌سنج).

آشکارساز کج‌شدگی

حسگر فیزیکی زیربنایی: شتاب‌سنج (+ احتمالاً حسگرهای دیگر تا زمانی که توان پایین باشد)

حالت گزارش‌دهی: ویژه

کم‌مصرف

فقط نسخه بیدارباش این حسگر را پیاده‌سازی کنید.

getDefaultSensor(SENSOR_TYPE_TILT_DETECTOR) حسگر بیدار شدن را برمی‌گرداند

آشکارساز کجی هربار که رویداد کجی تشخیص داده می‌شود رویدادی تولید می‌کند.

رویداد کج شدن با تغییر جهت میانگین پنجره ۲ ثانیه‌ای نیروی جاذبه به میزان حداقل ۳۵ درجه از زمان فعال‌سازی یا آخرین رویداد تولیدشده توسط حسگر تعریف می‌شود. الگوریتم به این صورت است:

  • reference_estimated_gravity = میانگین اندازه‌گیری‌های شتاب‌سنج در اولین ثانیه پس‌از فعال‌سازی یا جاذبه تخمینی هنگام تولید آخرین رویداد کج شدن.
  • ‫current_estimated_gravity = میانگین اندازه‌گیری‌های شتاب‌سنج در ۲ ثانیه گذشته.
  • راه‌اندازی وقتی angle(reference_estimated_gravity, current_estimated_gravity) > 35 degrees

شتاب‌های بزرگ بدون تغییر در جهت تلفن نباید باعث راه‌اندازی رویداد کج شدن شوند. برای مثال، پیچ تند یا شتاب قوی درحین رانندگی با خودرو نباید باعث راه‌اندازی رویداد کج شدن شود، حتی اگر زاویه شتاب متوسط بیش‌از ۳۵ درجه تغییر کند. معمولاً این حسگر فقط با کمک شتاب‌سنج پیاده‌سازی می‌شود. درصورتی‌که حسگرهای دیگر مصرف برق را به‌میزان قابل‌توجهی افزایش ندهند، می‌توان از آن‌ها نیز استفاده کرد. این حسگر کم‌مصرفی است که باید به SoC اجازه دهد به حالت تعلیق برود. این حسگر در لایه انتزاعی سخت‌افزار شبیه‌سازی نشود. هر رویداد حسگر 1 را در sensors_event_t.data[0] گزارش می‌کند.

حسگرهای ترکیبی وضعیت

بردار چرخش

حسگرهای فیزیکی زیربنایی: شتاب‌سنج، مغناطیس‌سنج، و ژیروسکوپ

حالت گزارش‌دهی: مداوم

‫getDefaultSensor(SENSOR_TYPE_ROTATION_VECTOR) حسگر غیربیدارکننده برمی‌گرداند

حسگر بردار چرخش جهت‌گیری دستگاه را نسبت به چارچوب مختصات «شرق-شمال-بالا» گزارش می‌دهد. این اطلاعات معمولاً ازطریق یکپارچه‌سازی قرائت‌های شتاب‌سنج، ژیروسکوپ، و مغناطیس‌سنج به‌دست می‌آید. سیستم مختصات شرق-شمال-بالا به‌عنوان یک پایه متعامد نرمال مستقیم تعریف می‌شود که در آن:

  • X به شرق اشاره می‌کند و مماس بر زمین است.
  • ‫Y به‌سمت شمال است و مماس با زمین است.
  • محور Z به‌سمت آسمان است و بر زمین عمود است.

جهت تلفن با چرخش لازم برای تراز کردن مختصات «شرق-شمال-بالا» با مختصات تلفن نشان داده می‌شود. یعنی، اعمال چرخش به چارچوب جهانی (X،‏Y،‏Z) آن‌ها را با مختصات تلفن (x،‏y،‏z) هم‌راستا می‌کند.

چرخش را می‌توان به‌عنوان چرخاندن تلفن با زاویه تتا حول محور rot_axis درنظر گرفت تا از جهت‌گیری دستگاه مرجع (ترازشده با شرق-شمال-بالا) به جهت‌گیری دستگاه کنونی برسد. چرخش به‌صورت چهار مؤلفه بدون واحد x،‏ y،‏ z،‏ w از یک کواترنیون واحد کدگذاری می‌شود:

  • sensors_event_t.data[0] = rot_axis.x*sin(theta/2)
  • sensors_event_t.data[1] = rot_axis.y*sin(theta/2)
  • sensors_event_t.data[2] = rot_axis.z*sin(theta/2)
  • sensors_event_t.data[3] = cos(theta/2)

مکان:

  • فیلدهای x،‏ y، و z مربوط به rot_axis مختصات‌های «شرق-شمال-بالا» بردار طول واحدی هستند که محور چرخش را نشان می‌دهد
  • ‫theta زاویه چرخش است

کواترنیون یک کواترنیون واحد است: باید دارای نرم 1 باشد. عدم اطمینان از این موضوع باعث رفتار نامنظم مشتری می‌شود.

علاوه‌براین، این حسگر دقت تخمینی جهت را گزارش می‌کند:

‫sensors_event_t.data[4] = estimated_accuracy (برحسب رادیان)

خطای عنوان باید کمتر از estimated_accuracy در ۹۵٪ مواقع باشد. این حسگر باید از ژیروسکوپ به‌عنوان ورودی اصلی تغییر جهت استفاده کند.

این حسگر همچنین از ورودی شتاب‌سنج و مغناطیس‌سنج برای جبران انحراف ژیروسکوپ استفاده می‌کند و نمی‌توان آن را فقط بااستفاده از شتاب‌سنج و مغناطیس‌سنج پیاده‌سازی کرد.

بردار چرخش بازی

حسگرهای فیزیکی زیربنایی: شتاب‌سنج و ژیروسکوپ (بدون مغناطیس‌سنج)

حالت گزارش‌دهی: مداوم

getDefaultSensor(SENSOR_TYPE_GAME_ROTATION_VECTOR) حسگر غیربیدارکننده برمی‌گرداند

حسگر بردار چرخش بازی شبیه به حسگر بردار چرخش است اما از میدان ژئومغناطیسی استفاده نمی‌کند. بنابراین محور Y به شمال اشاره نمی‌کند بلکه به مرجع دیگری اشاره می‌کند. این مرجع اجازه دارد با همان مرتبه بزرگی که ژیروسکوپ حول محور Z انحراف دارد، انحراف داشته باشد.

برای جزئیات مربوط به نحوه تنظیم sensors_event_t.data[0-3]، حسگر بردار چرخش را ببینید. این حسگر دقت تخمینی جهت را گزارش نمی‌کند: sensors_event_t.data[4] رزرو شده است و باید روی 0 تنظیم شود.

در حالت ایده‌آل، تلفنی که چرخانده شده و به همان جهت دنیای واقعی بازگشته است باید همان بردار چرخش بازی را گزارش کند.

این حسگر باید براساس ژیروسکوپ و شتاب‌سنج باشد. این حسگر نمی‌تواند از مغناطیس‌سنج به‌عنوان ورودی استفاده کند، به‌جز به‌طور غیرمستقیم ازطریق تخمین انحراف ژیروسکوپ.

گرانش

حسگرهای فیزیکی زیربنایی: شتاب‌سنج و (درصورت وجود) ژیروسکوپ (یا مغناطیس‌سنج درصورت عدم وجود ژیروسکوپ)

حالت گزارش‌دهی: مداوم

getDefaultSensor(SENSOR_TYPE_GRAVITY) حسگر غیربیدارکننده برمی‌گرداند

حسگر گرانش جهت و مقدار گرانش را در مختصات دستگاه گزارش می‌دهد.

مؤلفه‌های بردار جاذبه در فیلدهای x،‏ y، و z در sensors_event_t.acceleration برحسب m/s^2 گزارش می‌شود.

وقتی دستگاه در حالت استراحت است، برونداد حسگر گرانش باید با برونداد شتاب‌سنج یکسان باشد. در زمین، این مقدار حدود ۹٫۸ متر بر مجذور ثانیه است.

اگر دستگاه ژیروسکوپ داشته باشد، حسگر گرانش باید از ژیروسکوپ و شتاب‌سنج به‌عنوان ورودی استفاده کند.

اگر دستگاه ژیروسکوپ نداشته باشد، حسگر گرانش باید از شتاب‌سنج و مغناطیس‌سنج به‌عنوان ورودی استفاده کند.

بردار چرخش ژئومغناطیسی

حسگرهای فیزیکی زیربنایی: شتاب‌سنج و مغناطیس‌سنج (بدون ژیروسکوپ)

حالت گزارش‌دهی: مداوم

کم‌مصرف

getDefaultSensor(SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR) حسگر غیرفعال‌کننده را برمی‌گرداند

بردار چرخش ژئومغناطیسی شبیه به حسگر بردار چرخش است اما از مغناطیس‌سنج استفاده می‌کند و ژیروسکوپ ندارد.

این حسگر باید براساس مغناطیس‌سنج باشد. نمی‌توان آن را بااستفاده از ژیروسکوپ پیاده‌سازی کرد و این حسگر نمی‌تواند از ورودی ژیروسکوپ استفاده کند.

برای جزئیات مربوط به نحوه تنظیم sensors_event_t.data[0-4]، حسگر بردار چرخش را ببینید.

همانند حسگر بردار چرخش، خطای جهت باید ۹۵٪ مواقع کمتر از دقت تخمینی (sensors_event_t.data[4]) باشد.

این حسگر باید کم‌مصرف باشد، بنابراین باید در سخت‌افزار پیاده‌سازی شود.

جهت (منسوخ)

حسگرهای فیزیکی زیربنایی: شتاب‌سنج، مغناطیس‌سنج، و (درصورت وجود) ژیروسکوپ

حالت گزارش‌دهی: مداوم

getDefaultSensor(SENSOR_TYPE_ORIENTATION) حسگر غیرفعال‌کننده حالت بیدار شدن را برمی‌گرداند

توجه: این نوع حسگر قدیمی است که در «کیت توسعه نرم‌افزار Android» منسوخ شده است. این حسگر با حسگر بردار چرخش جایگزین شده است که تعریف واضح‌تری دارد. هرگاه امکان‌پذیر بود، از حسگر بردار چرخش به‌جای حسگر جهت‌یابی استفاده کنید.

حسگر گرایش وضعیت دستگاه را گزارش می‌کند. اندازه‌گیری‌ها در فیلدهای x،‏ y، و z از sensors_event_t.orientation با واحد درجه گزارش می‌شود:

  • sensors_event_t.orientation.x: سمت، زاویه بین جهت شمال مغناطیسی و محور Y، حول محور Z (0<=azimuth<360). 0=شمال، 90=شرق، 180=جنوب، 270=غرب.
  • sensors_event_t.orientation.y: گام، چرخش حول محور X (-180<=pitch<=180)، با مقادیر مثبت وقتی محور Z به‌سمت محور Y حرکت می‌کند.
  • sensors_event_t.orientation.z: چرخش، چرخش حول محور Y (-90<=roll<=90)، با مقادیر مثبت وقتی محور X به‌سمت محور Z حرکت می‌کند.

لطفاً توجه داشته باشید که به دلایل تاریخی، زاویه چرخش در جهت ساعت‌گرد مثبت است. (ازنظر ریاضی، باید در جهت خلاف عقربه‌های ساعت مثبت باشد):

تصویر جهت
   نسبت به دستگاه

شکل ۳. جهت نسبت به دستگاه

این تعریف با انحراف، گام، و غلتش مورداستفاده در هوانوردی متفاوت است که در آن محور X در امتداد سمت بلند هواپیما (از دم تا دماغه) است.

حسگر جهت‌یابی همچنین ازطریق sensors_event_t.orientation.status گزارش می‌دهد که انتظار دارد خوانش‌هایش چقدر دقیق باشد. برای اطلاعات بیشتر درباره مقادیر ممکن برای این فیلد، ثابت‌های SensorManager SENSOR_STATUS_* را ببینید.

حسگرهای کالیبره‌نشده

حسگرهای واسنجی‌نشده نتایج خام‌تری ارائه می‌دهند و ممکن است شامل برخی سوگیری‌ها باشند، اما همچنین «پرش‌های» کمتری از اصلاحات اعمال‌شده ازطریق واسنجی دارند. برخی‌از برنامه‌ها ممکن است این نتایج کالیبره‌نشده را به‌عنوان نتایجی روان‌تر و مطمئن‌تر ترجیح دهند. برای مثال، اگر برنامه‌ای درحال تلاش برای انجام ادغام حسگر خود باشد، معرفی کالیبراسیون‌ها می‌تواند نتایج را تحریف کند.

شتاب‌سنج کالیبره نشده است

حسگر فیزیکی زیرین: شتاب‌سنج

حالت گزارش‌دهی: پیوسته

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED) حسگر غیربیدارکننده برمی‌گرداند

حسگر شتاب‌سنج کالیبره‌نشده شتاب دستگاه را در امتداد سه محور حسگر بدون هیچ‌گونه اصلاح انحرافی گزارش می‌کند (انحراف کارخانه‌ای و جبران دما برای اندازه‌گیری‌های کالیبره‌نشده اعمال می‌شود)، همراه با تخمین انحراف. همه مقادیر در واحدهای SI (متر بر مجذور ثانیه) هستند و در فیلدهای sensors_event_t.uncalibrated_accelerometer گزارش می‌شوند:

  • ‫x_uncalib: شتاب (بدون جبران سوگیری) در امتداد محور X
  • ‫y_uncalib: شتاب (بدون جبران انحراف) در امتداد محور Y
  • ‫z_uncalib: شتاب (بدون جبران انحراف) در امتداد محور Z
  • ‫x_bias: انحراف تخمینی درطول محور X
  • y_bias: سوگیری تخمینی در امتداد محور Y
  • ‫z_bias: انحراف تخمینی در امتداد محور Z

ژیروسکوپ واسنجی‌نشده

حسگر فیزیکی زیرین: ژیروسکوپ

حالت گزارش‌دهی: مداوم

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_UNCALIBRATED) حسگر غیرفعال‌کننده حالت بیدار شدن را برمی‌گرداند

ژیروسکوپ کالیبره‌نشده نرخ چرخش حول محورهای حسگر را بدون اعمال جبران انحراف به آن‌ها، همراه با تخمین انحراف گزارش می‌دهد. همه مقادیر برحسب رادیان/ثانیه هستند و در فیلدهای sensors_event_t.uncalibrated_gyro گزارش می‌شوند:

  • ‫x_uncalib: سرعت زاویه‌ای (بدون جبران انحراف) حول محور X
  • y_uncalib: سرعت زاویه‌ای (بدون جبران رانش) حول محور Y
  • ‫z_uncalib: سرعت زاویه‌ای (بدون جبران انحراف) حول محور Z
  • ‫x_bias: انحراف تخمینی حول محور X
  • ‫y_bias: انحراف تخمینی حول محور Y
  • ‫z_bias: انحراف تخمینی حول محور Z

ازنظر مفهومی، اندازه‌گیری واسنجی‌نشده مجموع اندازه‌گیری واسنجی‌شده و تخمین سوگیری است: _uncalibrated = _calibrated + _bias.

مقادیر x_bias، y_bias، و z_bias انتظار می‌رود به‌محض اینکه تخمین گرایش تغییر کند، افزایش یابد و در بقیه زمان‌ها ثابت بماند.

برای جزئیات مربوط به سیستم مختصات استفاده‌شده، تعریف حسگر ژیروسکوپ را ببینید.

واکنش کارخانه‌ای و جبران دما باید برای اندازه‌گیری‌ها اعمال شود. همچنین، تخمین انحراف ژیروسکوپ باید پیاده‌سازی شود تا تخمین‌های معقول بتواند در x_bias، y_bias، و z_bias گزارش شود. اگر پیاده‌سازی نتواند انحراف را تخمین بزند، این حسگر نباید پیاده‌سازی شود.

اگر این حسگر وجود داشته باشد، حسگر «ژیروسکوپ» مربوطه نیز باید وجود داشته باشد و هر دو حسگر باید مقادیر sensor_t.name و sensor_t.vendor یکسانی داشته باشند.

میدان مغناطیسی تنظیم‌نشده

حسگر فیزیکی زیرین: مغناطیس‌سنج

حالت گزارش‌دهی: مداوم

getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED) حسگر غیرفعال‌کننده را برمی‌گرداند

حسگر میدان مغناطیسی تنظیم‌نشده، میدان مغناطیسی محیط را به‌همراه تخمین کالیبراسیون آهن سخت گزارش می‌کند. همه مقادیر برحسب میکروتسلا (uT) است و در فیلدهای sensors_event_t.uncalibrated_magnetic گزارش می‌شود:

  • ‫x_uncalib: میدان مغناطیسی (بدون جبران‌سازی آهن سخت) در امتداد محور X
  • y_uncalib: میدان مغناطیسی (بدون جبران آهن سخت) در امتداد محور Y
  • z_uncalib: میدان مغناطیسی (بدون جبران آهن سخت) در امتداد محور Z
  • ‫x_bias: انحراف آهن سخت تخمینی درطول محور X
  • ‫y_bias: سوگیری آهن سخت تخمینی در امتداد محور Y
  • ‫z_bias: انحراف آهن‌ربایی تخمینی در امتداد محور Z

ازنظر مفهومی، اندازه‌گیری واسنجی‌نشده مجموع اندازه‌گیری واسنجی‌شده و تخمین سوگیری است: _uncalibrated = _calibrated + _bias.

مغناطیس‌سنج کالیبره‌نشده به الگوریتم‌های سطح بالاتر اجازه می‌دهد تخمین آهن سخت بد را مدیریت کنند. مقادیر x_bias، y_bias، و z_bias به‌محض تغییر تخمین آهن سخت، جهش خواهند داشت و در بقیه زمان باید پایدار باشند.

واکنش‌سنجی آهن نرم و جبران دما باید برای اندازه‌گیری‌ها اعمال شود. همچنین، تخمین آهن سخت باید پیاده‌سازی شود تا تخمین‌های منطقی بتواند در x_bias، y_bias و z_bias گزارش شود. اگر پیاده‌سازی نتواند انحراف را تخمین بزند، این حسگر نباید پیاده‌سازی شود.

اگر این حسگر وجود داشته باشد، حسگر میدان مغناطیسی مربوطه نیز باید وجود داشته باشد و هر دو حسگر باید مقادیر sensor_t.name و sensor_t.vendor یکسانی داشته باشند.

زاویه لولا

حالت گزارش‌دهی: درصورت تغییر

getDefaultSensor(SENSOR_TYPE_HINGE_ANGLE) حسگر بیدار شدن را برمی‌گرداند

حسگر زاویه لولا زاویه بین دو بخش جدایی‌ناپذیر دستگاه را برحسب درجه اندازه‌گیری می‌کند. انتظار می‌رود حرکت لولا که با این نوع حسگر اندازه‌گیری می‌شود، روش‌های تعامل کاربر با دستگاه را تغییر دهد، برای مثال، با باز کردن یا آشکار کردن نمایشگر.

حسگرهای ترکیبی تعامل

برخی‌از حسگرها بیشتر برای تشخیص تعاملات با کاربر استفاده می‌شوند. ما نحوه پیاده‌سازی این حسگرها را تعریف نمی‌کنیم، اما این حسگرها باید کم‌مصرف باشند و سازنده دستگاه مسئولیت دارد کیفیت آن‌ها را ازنظر تجربه کاربر تأیید کند.

اشاره بیدار شدن

حسگرهای فیزیکی زیربنایی: تعریف‌نشده (هر چیزی با مصرف کم)

حالت گزارش‌دهی: تک‌ضرب

کم‌مصرف

فقط نسخه بیدارباش این حسگر را پیاده‌سازی کنید.

getDefaultSensor(SENSOR_TYPE_WAKE_GESTURE) حسگر بیدار شدن را برمی‌گرداند

حسگر اشاره بیدار کردن امکان بیدار کردن دستگاه را براساس حرکت خاص دستگاه فراهم می‌کند. وقتی این حسگر فعال می‌شود، دستگاه طوری رفتار می‌کند که انگار دکمه روشن/خاموش فشار داده شده است و صفحه‌نمایش را روشن می‌کند. کاربر می‌تواند این رفتار (روشن شدن صفحه وقتی این حسگر راه‌اندازی می‌شود) را در تنظیمات دستگاه غیرفعال کند. تغییرات در تنظیمات بر عملکرد حسگر تأثیر نمی‌گذارد: فقط بر اینکه چارچوب هنگام راه‌اندازی حسگر، صفحه‌نمایش را روشن کند یا نه تأثیر می‌گذارد. حرکت واقعی که باید تشخیص داده شود مشخص نشده است و سازنده دستگاه می‌تواند آن را انتخاب کند.

این حسگر باید کم‌مصرف باشد، زیرا احتمالاً ۲۴ ساعت شبانه‌روز و ۷ روز هفته فعال است.

هر رویداد حسگر 1 را در sensors_event_t.data[0] گزارش می‌کند.

اشاره برداشتن

حسگرهای فیزیکی زیربنایی: تعریف‌نشده (هر چیزی با توان پایین)

حالت گزارش‌دهی: تک‌ضرب

کم‌مصرف

فقط نسخه بیدارباش این حسگر را پیاده‌سازی کنید.

getDefaultSensor(SENSOR_TYPE_PICK_UP_GESTURE) حسگر بیدار شدن را برمی‌گرداند

حسگر اشاره برداشتن زمانی فعال می‌شود که دستگاه برداشته شود، صرف‌نظر از اینکه قبلاً کجا بوده است (میز، جیب، کیف).

هر رویداد حسگر 1 را در sensors_event_t.data[0] گزارش می‌کند.

اشاره نگاه

حسگرهای فیزیکی زیربنایی: تعریف‌نشده (هر چیزی با مصرف کم)

حالت گزارش‌دهی: یک‌باره

کم‌مصرف

فقط نسخه بیدارباش این حسگر را پیاده‌سازی کنید.

getDefaultSensor(SENSOR_TYPE_GLANCE_GESTURE) حسگر بیدار شدن را برمی‌گرداند

حسگر اشاره نگاه اجمالی امکان روشن کردن کوتاه صفحه‌نمایش را فراهم می‌کند تا کاربر بتواند براساس حرکتی خاص، نگاهی اجمالی به محتوای روی صفحه‌نمایش بیندازد. وقتی این حسگر راه‌اندازی می‌شود، دستگاه صفحه‌نمایش را برای لحظه‌ای روشن می‌کند تا به کاربر اجازه دهد اعلان‌ها یا محتوای دیگر را نگاهی سریع بیندازد، درحالی‌که دستگاه در حالت غیرتعاملی (نیمه‌خواب) قفل می‌ماند، سپس صفحه‌نمایش دوباره خاموش می‌شود. این عملکرد (روشن شدن مختصر صفحه وقتی این حسگر راه‌اندازی می‌شود) ممکن است توسط کاربر در تنظیمات دستگاه غیرفعال شود. تغییرات در تنظیمات بر عملکرد حسگر تأثیر نمی‌گذارد: فقط بر اینکه چارچوب هنگام فعال شدن، صفحه‌نمایش را به‌طور مختصر روشن کند یا نه تأثیر می‌گذارد. حرکت واقعی که باید تشخیص داده شود مشخص نشده است و سازنده دستگاه می‌تواند آن را انتخاب کند.

این حسگر باید کم‌مصرف باشد، زیرا احتمالاً به‌صورت شبانه‌روزی فعال خواهد بود. هر رویداد حسگر 1 را در sensors_event_t.data[0] گزارش می‌کند.

حسگرهای IMU محور محدود

از Android 13 دردسترس است، حسگرهای IMU محور محدود حسگرهایی هستند که از موارد استفاده‌ای که در آن‌ها هر سه محور (x،‏ y،‏ z) دردسترس نیستند پشتیبانی می‌کنند. انواع استاندارد IMU در Android (مثل SENSOR_TYPE_ACCELEROMETER و SENSOR_TYPE_GYROSCOPE) فرض می‌کنند که هر سه محور پشتیبانی می‌شوند. بااین‌حال، همه ضریب‌های شکل و دستگاه‌ها از شتاب‌سنج ۳ محوره و ژیروسکوپ ۳ محوره پشتیبانی نمی‌کنند.

محورهای محدود شتاب‌سنج

حسگرهای فیزیکی زیربنایی: شتاب‌سنج

حالت گزارش‌دهی: مداوم

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES) حسگر غیرفعال‌کننده حالت بیدار شدن را برمی‌گرداند

حسگر محور محدود شتاب‌سنج معادل TYPE_ACCELEROMETER است اما از مواردی که یک یا دو محور پشتیبانی نمی‌شوند پشتیبانی می‌کند.

سه مقدار رویداد حسگر آخر که توسط حسگر گزارش شده است نشان می‌دهد که آیا مقدار شتاب برای محورهای x،‏ y، و z پشتیبانی می‌شود یا نه. مقدار 1.0 نشان می‌دهد که محور پشتیبانی می‌شود و مقدار 0 نشان می‌دهد که پشتیبانی نمی‌شود. سازندگان دستگاه محورهای پشتیبانی‌شده را در زمان ساخت شناسایی می‌کنند و مقادیر در زمان اجرا تغییر نمی‌کند.

تولیدکنندگان دستگاه باید مقادیر شتاب را برای محورهای استفاده‌نشده روی 0 تنظیم کنند، به‌جای اینکه مقادیر تعریف‌نشده داشته باشند.

محورهای محدود ژیروسکوپ

حسگرهای فیزیکی زیربنایی: ژیروسکوپ

حالت گزارش‌دهی: مداوم

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES) حسگر غیربیدارکننده برمی‌گرداند

حسگر محورهای محدود ژیروسکوپ معادل TYPE_GYROSCOPE است اما از مواردی که یک یا دو محور پشتیبانی نمی‌شوند پشتیبانی می‌کند.

سه مقدار آخر رویداد حسگر که توسط حسگر گزارش شده است نشان می‌دهد که آیا مقدار سرعت زاویه‌ای برای محورهای x،‏ y، و z پشتیبانی می‌شود یا نه. مقدار 1.0 نشان می‌دهد که محور پشتیبانی می‌شود و مقدار 0 نشان می‌دهد که پشتیبانی نمی‌شود. سازندگان دستگاه محورهای پشتیبانی‌شده را در زمان ساخت شناسایی می‌کنند و مقادیر در زمان اجرا تغییر نمی‌کند.

سازندگان دستگاه باید مقادیر سرعت زاویه‌ای را برای محورهای استفاده‌نشده روی 0 تنظیم کنند.

محورهای محدود شتاب‌سنج کالیبره نشده است

حسگرهای فیزیکی زیربنایی: شتاب‌سنج

حالت گزارش‌دهی: پیوسته

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED) حسگر غیربیدارکننده برمی‌گرداند

شتاب‌سنج با محورهای محدود حسگر کالیبره‌نشده معادل TYPE_ACCELEROMETER_UNCALIBRATED است اما از مواردی که یک یا دو محور پشتیبانی نمی‌شوند پشتیبانی می‌کند.

سه مقدار آخر رویداد حسگر گزارش‌شده توسط حسگر نشان می‌دهد که آیا مقادیر شتاب و گرایش برای محورهای x،‏ y، و z پشتیبانی می‌شود یا نه. مقدار 1.0 نشان می‌دهد که محور پشتیبانی می‌شود و مقدار 0 نشان می‌دهد که پشتیبانی نمی‌شود. سازندگان دستگاه محورهای پشتیبانی‌شده را در زمان ساخت شناسایی می‌کنند و مقادیر در زمان اجرا تغییر نمی‌کند.

سازندگان دستگاه باید مقادیر شتاب و انحراف را برای محورهای استفاده‌نشده روی 0 تنظیم کنند.

محورهای محدود ژیروسکوپ کالیبره نشده است

حسگرهای فیزیکی زیربنایی: ژیروسکوپ

حالت گزارش‌دهی: پیوسته

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED) حسگر غیربیدارکننده برمی‌گرداند

حسگر کالیبره‌نشده محورهای محدود ژیروسکوپ معادل TYPE_GYROSCOPE_UNCALIBRATED است اما از مواردی که یک یا دو محور پشتیبانی نمی‌شوند پشتیبانی می‌کند.

سه مقدار آخر رویداد حسگر گزارش‌شده توسط حسگر نشان می‌دهد که آیا مقادیر سرعت زاویه‌ای و انحراف برای محورهای x، y، و z پشتیبانی می‌شوند یا نه. مقدار 1.0 نشان می‌دهد که محور پشتیبانی می‌شود و مقدار 0 نشان می‌دهد که پشتیبانی نمی‌شود. سازندگان دستگاه محورهای پشتیبانی‌شده را در زمان ساخت شناسایی می‌کنند و مقادیر در زمان اجرا تغییر نمی‌کند.

سازندگان دستگاه باید سرعت زاویه‌ای و مقادیر رانش را برای محورهای استفاده‌نشده روی 0 تنظیم کنند.

واحد اندازه‌گیری اینرسی با محورهای محدود ترکیبی

حسگرهای فیزیکی زیربنایی: هر ترکیبی از شتاب‌سنج ۳ محوری، ژیروسکوپ ۳ محوری، شتاب‌سنج ۳ محوری بدون کالیبراسیون، و حسگرهای ژیروسکوپ ۳ محوری بدون کالیبراسیون.

حالت گزارش‌دهی: مداوم

حسگر IMU محور محدود ترکیبی معادل حسگر IMU محور محدود است اما به‌جای اینکه در HAL پشتیبانی شود، داده‌های حسگر ۳ محوره را به انواع محور محدود معادل تبدیل می‌کند. این حسگرهای ترکیبی فقط برای دستگاه‌های خودرو فعال می‌شوند.

جدول زیر تبدیل نمونه‌ای از شتاب‌سنج استاندارد ۳ محوره به شتاب‌سنج ترکیبی با محورهای محدود را نشان می‌دهد.

مقادیر SensorEvent برای SENSOR_TYPE_ACCELEROMETER مثال SENSOR_TYPE_ACCELEROMETER SensorEvent ‫Composite SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES SensorEvent
values[0]

-۰٫۰۶۵

-۰٫۰۶۵

values[1]

۰٫۰۷۸

۰٫۰۷۸

values[2]

۹٫۸۰۸

۹.۸۰۸

مقادیر[۳]

موجود نیست

1.0

values[4]

موجود نیست

1.0

values[5]

موجود نیست

1.0

حسگرهای خودرو

حسگرهایی برای پشتیبانی از موارد استفاده خودرو.

عنوان

حسگرهای فیزیکی زیربنایی: هر ترکیبی از GPS، مغناطیس‌سنج، شتاب‌سنج، و ژیروسکوپ.

حالت گزارش‌دهی: مداوم

getDefaultSensor(SENSOR_TYPE_HEADING) حسگر غیربیدارکننده برمی‌گرداند

حسگر جهت که از Android 13 دردسترس است، جهتی را که دستگاه نسبت به شمال واقعی نشان می‌دهد برحسب درجه اندازه‌گیری می‌کند. حسگر جهت شامل دو مقدار SensorEvent است. یکی برای جهت اندازه‌گیری‌شده دستگاه و یکی برای دقت مقدار جهت ارائه‌شده.

مقادیر جهت گزارش‌شده توسط این حسگر باید بین 0.0 (شامل) و 360.0 (غیرشامل) باشد، 0 نشان‌دهنده شمال، 90 شرق، 180 جنوب، و 270 غرب است.

دقت این حسگر با اطمینان ۶۸ درصد تعریف شده است. در موردی که توزیع زیربنایی گاوسی نرمال باشد، دقت یک انحراف معیار است. برای مثال، اگر حسگر جهت مقدار جهتی ۶۰ درجه و مقدار دقت ۱۰ درجه را برگرداند، احتمال ۶۸ درصدی وجود دارد که جهت واقعی بین ۵۰ و ۷۰ درجه باشد.