حسگرها

نماد 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 (سند تعریف سازگاری)
    • /compatibility/android-cdd.pdf
    • بخش های مربوط به حسگرها را ببینید.
    • CDD ملایم است، بنابراین برآوردن الزامات CDD برای اطمینان از کیفیت بالای حسگرها کافی نیست.