انواع سنسور

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

محورهای حسگر

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

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

سنسور API فقط نسبت به جهت طبیعی صفحه نمایش است (هنگامی که جهت صفحه دستگاه تغییر می کند محورها عوض نمی شوند.

هماهنگ کنید سیستم API حسگر برای دستگاه های تلفن همراه

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

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

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

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

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

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

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

سنسورهای پایه

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

  • SENSOR_TYPE_ACCELEROMETER
  • SENSOR_TYPE_GYROSCOPE
  • SENSOR_TYPE_MAGNETOMETER

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

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

  • یک تراشه ژیروسکوپ دارای محدوده بایاس 1 درجه در ثانیه است.
    • پس از کالیبراسیون کارخانه، جبران دما و جبران بایاس اعمال می شود، بایاس واقعی سنسور اندروید کاهش می یابد، ممکن است به نقطه ای برسد که تضمین شود که بایاس زیر 0.01 درجه در ثانیه باشد.
    • در این شرایط، ما می گوییم که سنسور اندروید دارای بایاس زیر 0.01 درجه در ثانیه است، حتی اگر برگه داده سنسور زیرین 1 درجه در ثانیه گفته شده باشد.
  • فشارسنج با توان مصرفی 100 uW.
    • از آنجا که داده های تولید شده باید از تراشه به SoC منتقل شوند، هزینه واقعی انرژی برای جمع آوری داده ها از سنسور فشارسنج اندروید ممکن است بسیار بیشتر باشد، به عنوان مثال 1000 uW.
    • در این شرایط، می گوییم که سنسور اندروید دارای مصرف برق 1000 uW است، حتی اگر مصرف انرژی اندازه گیری شده در لیدهای تراشه فشارسنج 100uW باشد.
  • یک مغناطیس سنج که هنگام کالیبره شدن 100uW مصرف می کند، اما هنگام کالیبره کردن مصرف آن بیشتر است.
    • روال کالیبراسیون آن ممکن است نیازمند فعال کردن ژیروسکوپ، مصرف 5000 uW و اجرای برخی الگوریتم ها باشد که هزینه آن 900 uW دیگر است.
    • در این شرایط می گوییم حداکثر توان مصرفی سنسور (مغناطیس سنج) اندروید 6000 uW است.
    • در این مورد، میانگین مصرف برق معیار مفیدتری است و این همان چیزی است که در ویژگی های استاتیک سنسور از طریق HAL گزارش می شود.

شتاب سنج

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

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

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

همه مقادیر بر حسب واحد SI (m/s^2) هستند و شتاب دستگاه منهای نیروی گرانش را در امتداد سه محور سنسور اندازه گیری می کنند.

در اینجا نمونه هایی وجود دارد:

  • هنجار (x، y، z) باید نزدیک به 0 در هنگام سقوط آزاد باشد.
  • هنگامی که دستگاه صاف روی میز قرار می گیرد و در سمت چپ آن به سمت راست فشار داده می شود، مقدار شتاب x مثبت است.
  • هنگامی که دستگاه صاف روی میز قرار می گیرد، مقدار شتاب در امتداد z +9.81 alo است که مربوط به شتاب دستگاه (0 m/s^2) منهای نیروی گرانش (-9.81 m/s^2) است.
  • هنگامی که دستگاه صاف روی میز قرار می گیرد و به سمت آسمان هل داده می شود، مقدار شتاب بیشتر از 9.81+ است که مربوط به شتاب دستگاه (+A m/s^2) منهای نیروی گرانش (9.81-m) است. /s^2).

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

  • جبران دما
  • کالیبراسیون سوگیری آنلاین
  • کالیبراسیون مقیاس آنلاین

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

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

دمای محیط

حالت گزارش: در حال تغییر

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 چقدر دقیق باشد. برای اطلاعات بیشتر در مورد مقادیر احتمالی این فیلد، به ثابت های SENSOR_STATUS_* SensorManager مراجعه کنید.

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

ضربان قلب

حالت گزارش: در حال تغییر

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_BODY_SENSORS است.

نور

حالت گزارش: در حال تغییر

getDefaultSensor(SENSOR_TYPE_LIGHT) یک حسگر بدون بیدار شدن را برمی‌گرداند

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

اندازه گیری در sensors_event_t.light گزارش شده است.

نزدیکی

حالت گزارش: در حال تغییر

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

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

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

تا آندروید 4.4، سنسورهای مجاورت همیشه حسگرهای بیدارکننده بودند و SoC را با تشخیص تغییر نزدیکی بیدار می کردند. پس از اندروید 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) یک حسگر بدون بیدار شدن را برمی‌گرداند

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

خروجی به صورت مفهومی است: خروجی شتاب سنج منهای خروجی سنسور گرانش . در m/s^2 در فیلدهای x، y و z sensors_event_t.acceleration گزارش شده است.

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

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

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

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

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

حالت گزارش: تک شات

قدرت کم

فقط نسخه بیدار شدن این سنسور را اجرا کنید.

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

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

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

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

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

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

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

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

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

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

آشکارساز مرحله

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

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

قدرت کم

getDefaultSensor(SENSOR_TYPE_STEP_DETECTOR) یک حسگر بدون بیدار شدن را برمی گرداند

یک ردیاب گام هر بار که یک قدم توسط کاربر برداشته می شود یک رویداد ایجاد می کند.

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

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

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

sampling_period_ns هیچ تاثیری بر آشکارسازهای مرحله ندارد.

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

گام شمار

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

حالت گزارش: در حال تغییر

کم مصرف

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

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

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

مهر زمانی رویداد به زمانی تنظیم می شود که آخرین گام برای آن رویداد برداشته شده است.

نوع سنسور آشکارساز مرحله را برای نشان دادن زمان یک مرحله ببینید.

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

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

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

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

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

آشکارساز شیب

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

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

کم مصرف

فقط نسخه بیدار شدن این سنسور را اجرا کنید.

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

یک آشکارساز شیب هر بار که یک رویداد شیب شناسایی می شود یک رویداد ایجاد می کند.

یک رویداد شیب با تغییر جهت میانگین گرانش پنجره 2 ثانیه ای حداقل 35 درجه از زمان فعال سازی یا آخرین رویداد ایجاد شده توسط سنسور تعریف می شود. این الگوریتم است:

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

شتاب‌های زیاد بدون تغییر جهت تلفن نباید باعث ایجاد یک رویداد شیب شوند. به عنوان مثال، یک پیچ تند یا شتاب شدید در هنگام رانندگی نباید باعث ایجاد یک رویداد شیب شود، حتی اگر زاویه شتاب متوسط ​​ممکن است بیش از 35 درجه تغییر کند. به طور معمول، این سنسور تنها با کمک یک شتاب سنج اجرا می شود. در صورتی که مصرف برق را به میزان قابل توجهی افزایش ندهند می توان از سنسورهای دیگری نیز استفاده کرد. این یک سنسور کم مصرف است که باید به SoC اجازه دهد تا به حالت تعلیق برود. این سنسور را در HAL تقلید نکنید. هر رویداد حسگر 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) یک حسگر بدون بیدار شدن را برمی گرداند

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

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

هنگامی که دستگاه در حالت استراحت است، خروجی سنسور گرانش باید با شتاب سنج یکسان باشد. در زمین، قدر حدود 9.8 m/s^2 است.

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

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

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

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

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

کم مصرف

getDefaultSensor(SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR) یک حسگر بدون بیدار شدن را برمی گرداند

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

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

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

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

این سنسور باید کم قدرت باشد، بنابراین باید در سخت افزار پیاده سازی شود.

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

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

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

getDefaultSensor(SENSOR_TYPE_ORIENTATION) یک حسگر بدون بیدار شدن را برمی‌گرداند

توجه: این یک نوع سنسور قدیمی است که در Android SDK منسوخ شده است. سنسور بردار چرخش جایگزین آن شده است که واضح تر تعریف شده است. در صورت امکان از سنسور بردار چرخش روی سنسور جهت گیری استفاده کنید.

یک حسگر جهت یابی وضعیت دستگاه را گزارش می کند. اندازه‌گیری‌ها بر حسب درجه در فیلدهای 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 حرکت می کند.

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

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

شکل 3. جهت گیری نسبت به یک دستگاه

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

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

سنسورهای کالیبره نشده

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

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

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

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

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

یک سنسور شتاب‌سنج کالیبره نشده، شتاب دستگاه را در امتداد سه محور حسگر بدون هیچ گونه اصلاح بایاس گزارش می‌کند (بایاس کارخانه و جبران دما برای اندازه‌گیری‌های کالیبره نشده اعمال می‌شود)، همراه با یک تخمین بایاس. همه مقادیر در واحدهای SI (m/s^2) هستند و در قسمت‌های 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) یک حسگر بیدار شدن را برمی گرداند

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

این سنسور باید قدرت کم داشته باشد ، زیرا احتمالاً 24/7 فعال می شود.

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

ژست را انتخاب کنید

سنسورهای فیزیکی اساسی: نامشخص (هر چیزی کم قدرت)

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

کم مصرف

فقط نسخه بیداری این سنسور را پیاده سازی کنید.

getDefaultSensor(SENSOR_TYPE_PICK_UP_GESTURE) یک سنسور بیداری را برمی گرداند

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

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

ژست نگاه

سنسورهای فیزیکی اساسی: نامشخص (هر چیزی کم قدرت)

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

کم مصرف

فقط نسخه بیداری این سنسور را پیاده سازی کنید.

getDefaultSensor(SENSOR_TYPE_GLANCE_GESTURE) یک سنسور بیدارکننده را برمی گرداند

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

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

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

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

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

سنسورهای فیزیکی زیرین: شتاب سنج

گزارش دادن به حالت: مداوم

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES) یک سنسور غیر بیدار را برمی گرداند

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

سه مقدار رویداد سنسور آخر گزارش شده توسط سنسور نشان می دهد که آیا مقدار شتاب برای محورهای X ، Y و Z پشتیبانی می شود. مقدار 1.0 نشان می دهد که محور پشتیبانی می شود ، و مقدار 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

سنسورهای فیزیکی زیرین: هر ترکیبی از شتاب سنج 3 محوره ، ژیروسکوپ 3 محور ، شتاب سنج 3 محوره بدون کالیبره و سنسورهای غیر متعارف 3 محوره.

گزارش دادن به حالت: مداوم

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

جدول زیر تبدیل مثال از یک شتاب سنج استاندارد 3 محور به یک شتاب سنج محور محدود کامپوزیت را نشان می دهد.

مقادیر Sensorevent برای Sensor_Type_accelerometer مثال sensor_type_accelerometer sensorevent Composite Sensor_Type_Accelerometer_Limited_Axes Sensorevent
مقادیر [0]

-0.065

-0.065

مقادیر [1]

0.078

0.078

مقادیر [2]

9.808

9.808

مقادیر [3]

N/A

1.0

مقادیر [4]

N/A

1.0

مقادیر [5]

N/A

1.0

سنسورهای خودرو

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

سرفصل

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

گزارش دادن به حالت: مداوم

getDefaultSensor(SENSOR_TYPE_HEADING) یک سنسور بدون بیدار را برمی گرداند

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

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

دقت این سنسور با اطمینان 68 درصد تعریف می شود. در موردی که توزیع اساسی گاوسی طبیعی باشد ، دقت یک انحراف استاندارد است. به عنوان مثال ، اگر سنسور عنوان مقدار عنوان 60 درجه و مقدار دقت 10 درجه را برگرداند ، احتمال 68 درصد از عنوان واقعی بین 50 درجه و 70 درجه وجود دارد.

،

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

محورهای حسگر

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

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

API سنسور فقط به جهت گیری طبیعی صفحه نمایش نسبی است (محورها با تغییر جهت گیری صفحه دستگاه تعویض نمی شوند.

هماهنگ کنید سیستم API سنسور برای دستگاه های تلفن همراه

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

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

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

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

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

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

محور z از قاب مرجع به گرانش تراز شده است ، به این معنی که محور x و محور y هر دو افقی هستند. در نتیجه ، محور y ممکن است همیشه از محور جلو عبور نکند.

سنسورهای پایه

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

  • SENSOR_TYPE_ACCELEROMETER
  • SENSOR_TYPE_GYROSCOPE
  • SENSOR_TYPE_MAGNETOMETER

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

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

  • تراشه ژیروسکوپ دارای دامنه تعصب 1 درجه در ثانیه است.
    • پس از کالیبراسیون کارخانه ، جبران دما و جبران تعصب اعمال می شود ، تعصب واقعی سنسور اندرویدی کاهش می یابد ، ممکن است به جایی برسد که تعصب تضمین شود که زیر 0.01 درجه در ثانیه باشد.
    • در این شرایط ، ما می گوییم که سنسور اندرویدی دارای تعصب زیر 0.01 درجه در ثانیه است ، حتی اگر برگه داده سنسور زیرین 1 درجه در ثانیه باشد.
  • فشارسنج با مصرف برق 100 UW.
    • از آنجا که داده های تولید شده باید از تراشه به SOC منتقل شوند ، هزینه واقعی انرژی برای جمع آوری داده ها از سنسور اندرویدی فشارسنج ممکن است بسیار بیشتر باشد ، به عنوان مثال 1000 UW.
    • در این شرایط ، ما می گوییم که سنسور اندرویدی دارای مصرف برق 1000 UW است ، حتی اگر مصرف انرژی اندازه گیری شده در تراشه فشارسنجی 100UW باشد.
  • مغناطیسی که هنگام کالیبراسیون 100UW مصرف می کند ، اما هنگام کالیبراسیون بیشتر مصرف می کند.
    • روال کالیبراسیون آن ممکن است نیاز به فعال کردن ژیروسکوپ ، مصرف 5000 UW و اجرای برخی از الگوریتم ها داشته باشد و 900 UW دیگر نیز هزینه کند.
    • در این شرایط ، ما می گوییم که حداکثر مصرف انرژی سنسور اندرویدی (مغناطیس سنج) 6000 UW است.
    • در این حالت ، متوسط ​​مصرف انرژی اندازه گیری مفیدتر است و این همان چیزی است که در خصوصیات استاتیک سنسور از طریق HAL گزارش می شود.

شتاب سنج

گزارش دادن به حالت: مداوم

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER) یک سنسور غیر بیدار را برمی گرداند

یک سنسور شتاب سنج شتاب دستگاه را در طول سه محور سنسور گزارش می دهد. شتاب اندازه گیری شده شامل شتاب فیزیکی (تغییر سرعت) و گرانش است. اندازه گیری در زمینه های X ، Y و Z از سنسورها_EVENT_T.ACCELERATION گزارش شده است.

تمام مقادیر در واحدهای SI (M/S^2) قرار دارند و شتاب دستگاه را منهای نیروی گرانش در طول سه محور سنسور اندازه گیری می کنند.

در اینجا نمونه هایی وجود دارد:

  • هنجار (x ، y ، z) باید در هنگام سقوط آزاد نزدیک به 0 باشد.
  • هنگامی که دستگاه روی یک میز صاف قرار می گیرد و در سمت چپ آن به سمت راست فشار می یابد ، مقدار شتاب X مثبت است.
  • هنگامی که دستگاه روی یک جدول صاف قرار می گیرد ، مقدار شتاب در امتداد Z +9.81 ALO است ، که مطابق با شتاب دستگاه (0 m/s^2) منهای نیروی گرانش (-9.81 m/s^2) است.
  • هنگامی که دستگاه روی یک میز صاف قرار می گیرد و به سمت آسمان هل داده می شود ، مقدار شتاب بیشتر از +9.81 است ، که مربوط به شتاب دستگاه ( +a m/s^2) منهای نیروی گرانش است (-9.81 متر /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 گزارش شده است و تمام مقادیر در میکرو TESLA (UT) هستند.

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

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

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

ژیروسکوپ

گزارش دادن به حالت: مداوم

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 گزارش شده است. برای کسب اطلاعات بیشتر در مورد مقادیر ممکن برای این زمینه ، ثابت SensorManager ' SENSOR_STATUS_* را ببینید. به طور خاص ، پس از اولین فعال سازی ، مگر اینکه دستگاه مشخص شود که روی بدن قرار نگیرد ، باید میدان وضعیت اولین رویداد روی SENSOR_STATUS_UNRELIABLE تنظیم شود. از آنجا که این سنسور در حال تغییر است ، وقایع ایجاد می شوند که و فقط وقتی heart_rate.bpm یا heart_rate.status از آخرین رویداد تغییر کرده اند. این رویدادها سریعتر از هر sampling_period ایجاد نمی شوند.

sensor_t.requiredPermission همیشه SENSOR_PERMISSION_BODY_SENSORS است.

نور

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

getDefaultSensor(SENSOR_TYPE_LIGHT) یک سنسور غیر بیدار را برمی گرداند

یک سنسور سبک از روشنایی فعلی در واحدهای SI لوکس خبر می دهد.

اندازه گیری در sensors_event_t.light گزارش شده است.

نزدیکی

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

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

getDefaultSensor(SENSOR_TYPE_PROXIMITY) یک سنسور بیداری را برمی گرداند

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

تا اندروید 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) یک سنسور غیر بیدار را برمی گرداند

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

خروجی از نظر مفهومی است: خروجی شتاب سنج منهای خروجی سنسور گرانش . این گزارش در m/s^2 در زمینه های x ، y و z از sensors_event_t.acceleration گزارش شده است.

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

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

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

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

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

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

قدرت کم

فقط نسخه بیداری این سنسور را پیاده سازی کنید.

getDefaultSensor(SENSOR_TYPE_SIGNIFICANT_MOTION) یک سنسور بیداری را برمی گرداند

یک ردیاب حرکتی قابل توجه هنگام تشخیص یک حرکت قابل توجه باعث می شود: حرکتی که ممکن است منجر به تغییر در محل کاربر شود.

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

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

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

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

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

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

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

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

ردیاب مرحله

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

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

قدرت کم

getDefaultSensor(SENSOR_TYPE_STEP_DETECTOR) یک سنسور غیر بیدار را برمی گرداند

یک ردیاب مرحله هر بار که یک قدم توسط کاربر انجام می شود ، یک رویداد ایجاد می کند.

جدول زمانی sensors_event_t.timestamp با زمانی که پا به زمین برخورد می کند مطابقت دارد و باعث ایجاد تنوع بالایی در شتاب می شود.

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

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

sampling_period_ns هیچ تاثیری در ردیاب های مرحله ندارد.

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

گام شمار

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

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

کم مصرف

getDefaultSensor(SENSOR_TYPE_STEP_COUNTER) یک سنسور غیر بیدار را برمی گرداند

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

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

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

برای نشان دادن زمان یک مرحله ، به نوع سنسور ردیاب مرحله مراجعه کنید.

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

سخت افزار باید اطمینان حاصل کند که تعداد گام داخلی هرگز سرریز نمی شود. حداقل اندازه پیشخوان داخلی سخت افزار باید 16 بیت باشد. در صورت سرریز قریب الوقوع (حداکثر در هر مرحله 2^16 ~) ، SOC را می توان از خواب بیدار کرد تا راننده بتواند تعمیر و نگهداری ضد را انجام دهد.

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

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

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

ردیاب شیب

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

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

کم مصرف

فقط نسخه بیداری این سنسور را پیاده سازی کنید.

getDefaultSensor(SENSOR_TYPE_TILT_DETECTOR) یک سنسور بیداری را برمی گرداند

یک ردیاب شیب هر بار که یک رویداد شیب تشخیص می شود ، یک رویداد ایجاد می کند.

یک رویداد شیب با جهت گیری متوسط ​​وزن پنجره 2 ثانیه ای حداقل 35 درجه از زمان فعال سازی یا آخرین رویداد ایجاد شده توسط سنسور تعریف می شود. این الگوریتم است:

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

شتاب های بزرگ بدون تغییر در جهت گیری تلفن نباید باعث ایجاد یک رویداد شیب شود. به عنوان مثال ، یک چرخش تیز یا شتاب شدید هنگام رانندگی یک ماشین نباید باعث ایجاد یک واقعه شیب شود ، حتی اگر زاویه شتاب متوسط ​​ممکن است بیش از 35 درجه متفاوت باشد. به طور معمول ، این سنسور با کمک فقط یک شتاب سنج اجرا می شود. در صورت افزایش چشمگیر مصرف برق ، می توان از سنسورهای دیگر نیز استفاده کرد. این یک سنسور کم مصرف است که باید به 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 زاویه چرخش است

Quaternion یک کواترنیون واحد است: باید از هنجار 1 باشد. عدم اطمینان از این امر باعث رفتار نامنظم مشتری خواهد شد.

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

sensors_event_t.data[4] = estimated_accuracy (در رادیان)

خطای عنوان باید کمتر از estimated_accuracy 95 ٪ از زمان باشد. این سنسور باید از یک ژیروسکوپ به عنوان ورودی اصلی تغییر جهت استفاده کند.

این سنسور همچنین از ورودی شتاب سنج و مگنتومتر برای جبران رانش ژیروسکوپ استفاده می کند و با استفاده از تنها شتاب سنج و مگنتومتر قابل اجرا نیست.

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

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

گزارش دادن به حالت: مداوم

getDefaultSensor(SENSOR_TYPE_GAME_ROTATION_VECTOR) یک سنسور غیر بیدار را برمی گرداند

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

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

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

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

جاذبه

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

گزارش دادن به حالت: مداوم

getDefaultSensor(SENSOR_TYPE_GRAVITY) یک سنسور غیر بیدار را برمی گرداند

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

اجزای بردار گرانش در m/s^2 در زمینه های x ، y و z از sensors_event_t.acceleration گزارش شده است.

هنگامی که دستگاه در حال استراحت است ، خروجی سنسور گرانش باید با شتاب سنج یکسان باشد. روی زمین ، بزرگی حدود 9.8 متر بر ثانیه^2 است.

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

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

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

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

گزارش دادن به حالت: مداوم

کم مصرف

getDefaultSensor(SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR) یک سنسور غیر بیدار را برمی گرداند

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

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

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

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

این سنسور باید قدرت کم داشته باشد ، بنابراین باید در سخت افزار پیاده سازی شود.

جهت گیری (مستهلک)

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

گزارش دادن به حالت: مداوم

getDefaultSensor(SENSOR_TYPE_ORIENTATION) یک سنسور بدون بیدار شدن را برمی گرداند

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

یک سنسور جهت گیری نگرش دستگاه را گزارش می کند. The measurements are reported in degrees in the x, y, and z fields of sensors_event_t.orientation :

  • sensors_event_t.orientation.x : azimuth, the angle between the magnetic north direction and the Y axis, around the Z axis ( 0<=azimuth<360 ). 0=North, 90=East, 180=South, 270=West.
  • sensors_event_t.orientation.y : pitch, rotation around X axis ( -180<=pitch<=180 ), with positive values when the Z axis moves toward the Y axis.
  • sensors_event_t.orientation.z : roll, rotation around Y axis ( -90<=roll<=90 ), with positive values when the X axis moves towards the Z axis.

Please note, for historical reasons the roll angle is positive in the clockwise direction. (Mathematically speaking, it should be positive in the counter-clockwise direction):

Depiction of orientation
   relative to a device

Figure 3. Orientation relative to a device

This definition is different from yaw, pitch, and roll used in aviation where the X axis is along the long side of the plane (tail to nose).

The orientation sensor also reports how accurate it expects its readings to be through sensors_event_t.orientation.status . See the SensorManager 's SENSOR_STATUS_* constants for more information on possible values for this field.

Uncalibrated sensors

Uncalibrated sensors provide more raw results and may include some bias but also contain fewer "jumps" from corrections applied through calibration. Some apps may prefer these uncalibrated results as smoother and more reliable. For instance, if an app is attempting to conduct its own sensor fusion, introducing calibrations can actually distort results.

Accelerometer uncalibrated

Underlying physical sensor: Accelerometer

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED) returns a non-wake-up sensor

An uncalibrated accelerometer sensor reports the acceleration of the device along the three sensor axes without any bias correction (factory bias and temperature compensation are applied to uncalibrated measurements), along with a bias estimate. All values are in SI units (m/s^2) and are reported in the fields of sensors_event_t.uncalibrated_accelerometer :

  • x_uncalib : acceleration (without bias compensation) along the X axis
  • y_uncalib : acceleration (without bias compensation) along the Y axis
  • z_uncalib : acceleration (without bias compensation) along the Z axis
  • x_bias : estimated bias along X axis
  • y_bias : estimated bias along Y axis
  • z_bias : estimated bias along Z axis

Gyroscope uncalibrated

Underlying physical sensor: Gyroscope

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_UNCALIBRATED) returns a non-wake-up sensor

An uncalibrated gyroscope reports the rate of rotation around the sensor axes without applying bias compensation to them, along with a bias estimate. All values are in radians/second and are reported in the fields of sensors_event_t.uncalibrated_gyro :

  • x_uncalib : angular speed (without drift compensation) around the X axis
  • y_uncalib : angular speed (without drift compensation) around the Y axis
  • z_uncalib : angular speed (without drift compensation) around the Z axis
  • x_bias : estimated drift around X axis
  • y_bias : estimated drift around Y axis
  • z_bias : estimated drift around Z axis

Conceptually, the uncalibrated measurement is the sum of the calibrated measurement and the bias estimate: _uncalibrated = _calibrated + _bias .

The x_bias , y_bias and z_bias values are expected to jump as soon as the estimate of the bias changes, and they should be stable the rest of the time.

See the definition of the gyroscope sensor for details on the coordinate system used.

Factory calibration and temperature compensation must be applied to the measurements. Also, gyroscope drift estimation must be implemented so that reasonable estimates can be reported in x_bias , y_bias and z_bias . If the implementation isn't able to estimate the drift, then this sensor must not be implemented.

If this sensor is present, then the corresponding Gyroscope sensor must also be present and both sensors must share the same sensor_t.name and sensor_t.vendor values.

Magnetic field uncalibrated

Underlying physical sensor: Magnetometer

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED) returns a non-wake-up sensor

An uncalibrated magnetic field sensor reports the ambient magnetic field together with a hard iron calibration estimate. All values are in micro-Tesla (uT) and are reported in the fields of sensors_event_t.uncalibrated_magnetic :

  • x_uncalib : magnetic field (without hard-iron compensation) along the X axis
  • y_uncalib : magnetic field (without hard-iron compensation) along the Y axis
  • z_uncalib : magnetic field (without hard-iron compensation) along the Z axis
  • x_bias : estimated hard-iron bias along the X axis
  • y_bias : estimated hard-iron bias along the Y axis
  • z_bias : estimated hard-iron bias along the Z axis

Conceptually, the uncalibrated measurement is the sum of the calibrated measurement and the bias estimate: _uncalibrated = _calibrated + _bias .

The uncalibrated magnetometer allows higher level algorithms to handle bad hard iron estimation. The x_bias , y_bias and z_bias values are expected to jump as soon as the estimate of the hard-iron changes, and they should be stable the rest of the time.

Soft-iron calibration and temperature compensation must be applied to the measurements. Also, hard-iron estimation must be implemented so that reasonable estimates can be reported in x_bias , y_bias and z_bias . If the implementation isn't able to estimate the bias, then this sensor must not be implemented.

If this sensor is present, then the corresponding magnetic field sensor must be present and both sensors must share the same sensor_t.name and sensor_t.vendor values.

Hinge angle

Reporting-mode: On-change

getDefaultSensor(SENSOR_TYPE_HINGE_ANGLE) returns a wake-up sensor

A hinge angle sensor measures the angle, in degrees, between two integral parts of the device. Movement of a hinge measured by this sensor type is expected to alter the ways in which the user can interact with the device, for example, by unfolding or revealing a display.

Interaction composite sensors

Some sensors are mostly used to detect interactions with the user. We don't define how those sensors must be implemented, but they must be low power and it's the responsibility of the device manufacturer to verify their quality in terms of user experience.

Wake up gesture

Underlying physical sensors: Undefined (anything low power)

Reporting-mode: One-shot

کم مصرف

Implement only the wake-up version of this sensor.

getDefaultSensor(SENSOR_TYPE_WAKE_GESTURE) returns a wake-up sensor

A wake up gesture sensor enables waking up the device based on a device specific motion. When this sensor triggers, the device behaves as if the power button was pressed, turning the screen on. This behavior (turning on the screen when this sensor triggers) might be deactivated by the user in the device settings. Changes in settings don't impact the behavior of the sensor: only whether the framework turns the screen on when it triggers. The actual gesture to be detected isn't specified, and can be chosen by the manufacturer of the device.

This sensor must be low power, as it's likely to be activated 24/7.

Each sensor event reports 1 in sensors_event_t.data[0] .

Pick up gesture

Underlying physical sensors: Undefined (anything low power)

Reporting-mode: One-shot

کم مصرف

Implement only the wake-up version of this sensor.

getDefaultSensor(SENSOR_TYPE_PICK_UP_GESTURE) returns a wake-up sensor

A pick-up gesture sensor triggers when the device is picked up regardless of wherever it was before (desk, pocket, bag).

Each sensor event reports 1 in sensors_event_t.data[0] .

Glance gesture

Underlying physical sensors: Undefined (anything low power)

Reporting-mode: One-shot

کم مصرف

Implement only the wake-up version of this sensor.

getDefaultSensor(SENSOR_TYPE_GLANCE_GESTURE) returns a wake-up sensor

A glance gesture sensor enables briefly turning the screen on to enable the user to glance content on screen based on a specific motion. When this sensor triggers, the device will turn the screen on momentarily to allow the user to glance notifications or other content while the device remains locked in a non-interactive state (dozing), then the screen will turn off again. This behavior (briefly turning on the screen when this sensor triggers) might be deactivated by the user in the device settings. Changes in settings do not impact the behavior of the sensor: only whether the framework briefly turns the screen on when it triggers. The actual gesture to be detected isn't specified, and can be chosen by the manufacturer of the device.

This sensor must be low power, as it's likely to be activated 24/7. Each sensor event reports 1 in sensors_event_t.data[0] .

Limited axes IMU sensors

Available from Android 13, limited axes IMU sensors are sensors that support use cases where not all three axes (x, y, z) are available. Standard IMU types in Android (such as SENSOR_TYPE_ACCELEROMETER and SENSOR_TYPE_GYROSCOPE ) assume that all three axes are supported. However, not all form factors and devices support 3-axis accelerometers and 3-axis gyroscopes.

Accelerometer limited axes

Underlying physical sensors: Accelerometer

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES) returns a non-wake-up sensor

An accelerometer limited axes sensor is equivalent to TYPE_ACCELEROMETER but supports cases where one or two axes aren't supported.

The last three sensor event values reported by the sensor represent whether the acceleration value for the x, y, and z axes are supported. A value of 1.0 indicates that the axis is supported, and a value of 0 indicates it isn't supported. Device manufacturers identify the supported axes at build time and the values don't change during runtime.

Device manufacturers must set the acceleration values for unused axes to 0 , instead of having undefined values.

Gyroscope limited axes

Underlying physical sensors: Gyroscope

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES) returns a non-wake-up sensor

A gyroscope limited axes sensor is equivalent to TYPE_GYROSCOPE but supports cases where one or two axes aren't supported.

The last three sensor event values reported by the sensor represent whether the angular speed value for the x, y, and z axes are supported. A value of 1.0 indicates that the axis is supported, and a value of 0 indicates it isn't supported. Device manufacturers identify the supported axes at build time and the values don't change during runtime.

Device manufacturers must set the angular speed values for unused axes to 0 .

Accelerometer limited axes uncalibrated

Underlying physical sensors: Accelerometer

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED) returns a non-wake-up sensor

An accelerometer limited axes uncalibrated sensor is equivalent to TYPE_ACCELEROMETER_UNCALIBRATED but supports cases where one or two axes aren't supported.

The last three sensor event values reported by the sensor represent whether the acceleration and bias values for the x, y, and z axes are supported. A value of 1.0 indicates that the axis is supported, and a value of 0 indicates it isn't supported. Device manufacturers identify the supported axes at build time and the values don't change during runtime.

Device manufacturers must set the acceleration and bias values for unused axes to 0 .

Gyroscope limited axes uncalibrated

Underlying physical sensors: Gyroscope

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED) returns a non-wake-up sensor

A gyroscope limited axes uncalibrated sensor is equivalent to TYPE_GYROSCOPE_UNCALIBRATED but supports cases where one or two axes aren't supported.

The last three sensor event values reported by the sensor represent whether the angular speed and drift values for the x, y, and z axes are supported. A value of 1.0 indicates that the axis is supported, and a value of 0 indicates it isn't supported. Device manufacturers identify the supported axes at build time and the values don't change during runtime.

Device manufacturers must set the angular speed and drift values for unused axes to 0 .

Composite limited axes IMU

Underlying physical sensors: Any combination of 3-axis accelerometer, 3-axis gyroscope, 3-axis accelerometer uncalibrated, and 3-axis gyroscope uncalibrated sensors.

Reporting-mode: Continuous

A composite limited axes IMU sensor is equivalent to a limited axes IMU sensor but instead of being supported at the HAL, it converts the 3-axis sensor data into the equivalent limited axes variants. These composite sensors are only enabled for automotive devices.

The following table shows an example conversion from a standard 3-axis accelerometer to a composite limited axes accelerometer.

SensorEvent Values for SENSOR_TYPE_ACCELEROMETER Example SENSOR_TYPE_ACCELEROMETER SensorEvent Composite SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES SensorEvent
values[0]

-0.065

-0.065

values[1]

0.078

0.078

values[2]

9.808

9.808

values[3]

N/A

1.0

values[4]

N/A

1.0

values[5]

N/A

1.0

سنسورهای خودرو

Sensors to support automotive use cases.

سرفصل

Underlying physical sensors: Any combination of GPS, magnetometer, accelerometer, and gyroscope.

Reporting-mode: Continuous

getDefaultSensor(SENSOR_TYPE_HEADING) returns a non-wake-up sensor

Available from Android 13, a heading sensor measures the direction in which the device is pointing relative to true north in degrees. The heading sensor includes two SensorEvent values. One for the measured device heading and one for the accuracy of the provided heading value.

Heading values reported by this sensor must be between 0.0 (inclusive) and 360.0 (exclusive), with 0 indicating north, 90 east, 180 south, and 270 west.

Accuracy for this sensor is defined at 68 percent confidence. In the case where the underlying distribution is Gaussian normal, the accuracy is one standard deviation. For example, if the heading sensor returns a heading value of 60 degrees and an accuracy value of 10 degrees, there's a 68 percent probability of the true heading being between 50 degrees and 70 degrees.