حسگرها

نماد HAL سنسورهای اندروید

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

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

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

دوربین، حسگر اثرانگشت، میکروفون و صفحه نمایش لمسی در لیست دستگاه‌های فیزیکی ارائه‌دهنده داده وجود ندارد. این دستگاه ها مکانیزم گزارش دهی خاص خود را دارند. جداسازی دلخواه است، اما به طور کلی، سنسورهای اندروید داده های پهنای باند کمتری را ارائه می دهند. به عنوان مثال، "100hz x 3 channels" برای شتاب سنج در مقابل "25hz x 8 MP x 3 channels" برای دوربین یا "44kHz x 1 channel" برای یک میکروفون.

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

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

هر سنسور اندروید دارای یک "نوع" است که نشان دهنده نحوه رفتار سنسور و داده هایی است که ارائه می دهد.

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

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

هر رویداد شامل:

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

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

اسناد موجود

هدف توسعه دهندگان

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

  • بررسی اجمالی
  • لایه انتزاعی سخت افزاری (HAL)
  • Android CDD (سند تعریف سازگاری)