حسگرها

آیکون HAL سنسورهای اندروید

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

سنسورهای اندروید چیستند؟

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

دوربین، حسگر اثر انگشت، میکروفون و صفحه لمسی در فهرست دستگاه‌های فیزیکی ارائه‌دهنده داده قرار ندارند. این دستگاه‌ها مکانیسم گزارش‌دهی خاص خود را دارند؛ جداسازی دلخواه است، اما به‌طورکلی، حسگرهای اندروید داده‌های پهنای باند کمتری ارائه می‌دهند. به‌عنوان مثال، «۱۰۰ هرتز × ۳ کانال» برای شتاب‌سنج در مقابل «۲۵ هرتز × ۸ مگاپیکسل × ۳ کانال» برای دوربین یا «۴۴ کیلوهرتز × ۱ کانال» برای میکروفون.

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

  • اغلب، تراشه‌های حسگر از طریق یک هاب حسگر به SoC متصل می‌شوند و امکان نظارت و پردازش کم‌مصرف داده‌ها را فراهم می‌کنند.
  • اغلب، از مدار مجتمع بین‌رسانا (I2C) یا رابط جانبی سریال (SPI) به عنوان مکانیزم انتقال استفاده می‌شود.
  • برای کاهش مصرف برق، برخی معماری‌ها سلسله مراتبی هستند، به طوری که برخی از پردازش‌های حداقلی در مدار مجتمع مخصوص کاربرد (ASIC - مانند تشخیص حرکت روی تراشه شتاب‌سنج) انجام می‌شود و بیشتر در یک میکروکنترلر انجام می‌شود (مانند تشخیص گام در یک هاب حسگر).
  • انتخاب معماری بر اساس ویژگی‌های دقت، توان، قیمت و اندازه بسته‌بندی به سازنده دستگاه بستگی دارد. برای اطلاعات بیشتر به پشته حسگر مراجعه کنید.
  • قابلیت‌های دسته بندی (Batching) از ملاحظات مهم برای بهینه‌سازی مصرف برق هستند. برای اطلاعات بیشتر به بخش دسته بندی (Batching) مراجعه کنید.

هر حسگر اندروید یک «نوع» دارد که نشان می‌دهد حسگر چگونه رفتار می‌کند و چه داده‌هایی را ارائه می‌دهد.

  • انواع رسمی حسگرهای اندروید در فایل sensors.h با نام‌های SENSOR_TYPE_… تعریف شده‌اند.
    • اکثریت قریب به اتفاق حسگرها دارای یک نوع حسگر رسمی هستند.
    • این نوع‌ها در SDK اندروید مستند شده‌اند.
    • رفتار حسگرها با آن نوع‌ها در مجموعه تست سازگاری اندروید (CTS) آزمایش می‌شود.
  • اگر سازنده‌ای نوع جدیدی از حسگر را در دستگاه اندرویدی خود ادغام کند، می‌تواند نوع موقت خود را برای ارجاع به آن تعریف کند.
    • این نوع‌ها مستند نشده‌اند، بنابراین بعید است که توسعه‌دهندگان برنامه‌ها از آنها استفاده کنند، یا به این دلیل که از وجود آنها بی‌اطلاع هستند، یا می‌دانند که به ندرت وجود دارند (فقط در برخی از دستگاه‌های این سازنده خاص).
    • آنها توسط CTS آزمایش نمی‌شوند.
    • زمانی که اندروید یک نوع حسگر رسمی برای این نوع حسگر تعریف کند، تولیدکنندگان باید استفاده از نوع موقت خود را متوقف کرده و به جای آن از نوع رسمی استفاده کنند. به این ترتیب، این حسگر توسط توسعه‌دهندگان برنامه‌های بیشتری مورد استفاده قرار خواهد گرفت.
  • فهرست تمام حسگرهای موجود در دستگاه توسط پیاده‌سازی HAL گزارش می‌شود.
    • ممکن است چندین حسگر از یک نوع وجود داشته باشد. برای مثال، دو حسگر مجاورتی یا دو شتاب‌سنج.
    • اکثریت قریب به اتفاق برنامه‌ها فقط یک حسگر از یک نوع خاص را درخواست می‌کنند. برای مثال، برنامه‌ای که شتاب‌سنج پیش‌فرض را درخواست می‌کند، اولین شتاب‌سنج موجود در لیست را دریافت خواهد کرد.
    • حسگرها اغلب توسط جفت‌های بیدارباش و غیر بیدارباش تعریف می‌شوند، هر دو حسگر از یک نوع هستند، اما در مشخصه بیدارباش خود متفاوتند.

حسگرهای اندروید داده‌ها را به صورت مجموعه‌ای از رویدادهای حسگر ارائه می‌دهند.

هر رویداد شامل موارد زیر است:

  • یک دسته به حسگری که آن را تولید کرده است
  • مهر زمانی که رویداد در آن شناسایی یا اندازه‌گیری شده است، بر اساس SystemClock.elapsedRealtimeNanos()
  • و برخی داده‌ها

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

مستندات موجود

توسعه‌دهندگان را هدف قرار داده است

تولیدکنندگان را هدف قرار داده است

  • نمای کلی
  • لایه انتزاعی سخت‌افزار (HAL)
  • سند تعریف سازگاری (CDD) اندروید
    • /compatibility/android-cdd.pdf
    • به بخش‌های مربوط به حسگرها مراجعه کنید.
    • CDD سهل‌گیرانه عمل می‌کند، بنابراین برآورده کردن الزامات CDD برای تضمین حسگرهای با کیفیت بالا کافی نیست.