حسگرها

نماد Android Sensors HAL

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

حسگرهای Android چیست؟

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

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

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

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

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

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

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

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

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

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

اسناد موجود

هدف‌یابی توسعه‌دهندگان

هدف‌یابی‌شده برای سازندگان

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