اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release
بدلاً من aosp-main
لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
أجهزة الاستشعار
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
تمنح أدوات استشعار Android التطبيقات إمكانية الوصول إلى أدوات الاستشعار
الجسدية الأساسية للجهاز الجوّال. وهي أجهزة افتراضية توفّر البيانات وتحدّدها sensors.h، وهي طبقة HAL (Hardware Abstraction Layer) الخاصة بأجهزة الاستشعار.
ما هي أدوات استشعار Android؟
أجهزة استشعار Android هي أجهزة افتراضية توفّر بيانات من مجموعة من
أجهزة الاستشعار الفيزيائية: مقاييس التسارع والجيروسكوبات ومقياسات المجال المغناطيسي ومقياس الضغط الجوي ومقاييس الرطوبة
والضغط والضوء والقرب ومعدل ضربات القلب.
لا يتم تضمين الكاميرا
وجهاز استشعار بصمة الإصبع والميكروفون والشاشة التي تعمل باللمس في قائمة الأجهزة المادية التي تقدّم البيانات. لهذه الأجهزة mekanisme reporting الخاصة بها، ويكون الفصل عشوائيًا، ولكن بشكل عام، توفّر أدوات استشعار Android بيانات ذات معدل نقل بيانات أقل. على سبيل المثال، "100 هرتز × 3 قنوات" لمقياس سرعة مقارنةً بـ "25 هرتز × 8 ميغا بكسل × 3 قنوات" للكاميرا أو "44 كيلوهرتز × قناة واحدة" للميكروفون.
لا يحدِّد نظام التشغيل Android كيفية ربط مختلف أجهزة الاستشعار المادية
بالمنظومة على الرقاقة (SoC).
- غالبًا ما تكون شرائح الاستشعار متصلة بوحدة المعالجة المركزية من خلال وحدة تحكّم في الاستشعار، ما يتيح
بعض عمليات المراقبة ومعالجة البيانات باستخدام طاقة منخفضة.
- غالبًا ما يتم استخدام واجهة Inter-Integrated Circuit (I2C) أو Serial Peripheral Interface
(SPI) كآلية نقل.
- للحد من استهلاك الطاقة، تكون بعض التصاميم هرمية، ويتم تنفيذ بعض المعالجة البسيطة في الدائرة المتكاملة الخاصة بالتطبيق (ASIC، مثل رصد الحركة في شريحة مقياس التسارع)، ويتم تنفيذ المزيد من المعالجة في وحدة التحكّم الدقيقة (مثل رصد الخطوات في مركز الاستشعار).
- يعود اختيار البنية إلى الشركة المصنّعة للجهاز استنادًا إلى
سمات الدقة والقوة والسعر وحجم الحزمة. اطّلِع على مجموعة أدوات الاستشعار للحصول على مزيد من
المعلومات.
- إنّ إمكانات تجميع البيانات هي عامل مهم في تحسين فعالية
الأداء. يمكنك الاطّلاع على المعالجة المجمّعة للحصول على
المزيد من المعلومات.
يحتوي كل جهاز استشعار Android على "نوع" يمثّل سلوك الجهاز
والبيانات التي يوفّرها.
- يتم تحديد أنواع
أجهزة الاستشعار الرسمية في Android في sensors.h ضمن الأسماء SENSOR_TYPE_…
- تحتوي الغالبية العظمى من أجهزة الاستشعار على نوع رسمي.
- ويتم توثيق هذه الأنواع في حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
- يتم اختبار سلوك هذه الأنواع من أجهزة الاستشعار في "مجموعة أدوات اختبار التوافق" (CTS) لنظام التشغيل Android.
- إذا دمجت الشركة المصنّعة نوعًا جديدًا من أجهزة الاستشعار في جهاز Android، يمكنها تحديد نوع مؤقت خاص بها للإشارة إليه.
- هذه الأنواع غير موثَّقة، لذا من غير المرجّح أن يستخدمها مطوّرو التطبيقات، إما بسبب عدم معرفتهم بها أو
بسبب ندرة توفّرها (على بعض الأجهزة فقط من هذا
المصنّع المحدّد).
- ولا يتم اختبارها من خلال مجموعة اختبار التوافق (CTS).
- بعد أن يحدِّد نظام التشغيل Android نوعًا رسميًا لهذا النوع من أجهزة الاستشعار،
على المصنّعين التوقف عن استخدام النوع المؤقت الخاص بهم واستخدام
النوع الرسمي بدلاً من ذلك. بهذه الطريقة، سيستخدم المزيد من
مطوّري التطبيقات أداة الاستشعار.
- يتم الإبلاغ عن قائمة جميع أجهزة الاستشعار المتوفّرة على الجهاز من خلال تنفيذ HAL.
- يمكن أن يكون هناك عدة أجهزة استشعار من النوع نفسه. على سبيل المثال، اثنان
من أدوات استشعار التقارب أو مقياسَي تسارع
- لا تطلب الغالبية العظمى من التطبيقات سوى أداة استشعار واحدة من نوع معيّن. على سبيل المثال، سيحصل التطبيق الذي يطلب أداة التسارُع التلقائية
على أداة التسارُع الأولى في القائمة.
- غالبًا ما يتم تعريف الحساسات من خلال أزواج التنشيط و
عدم التنشيط
، حيث يتشارك كلا الحسّاسَين النوع نفسه، ولكنهما يختلفان من حيث
سمة التنشيط.
تقدّم أدوات استشعار Android البيانات على شكل سلسلة من أحداث الاستشعار.
يحتوي كل حدث
على ما يلي:
يعتمد تفسير البيانات التي يتم الإبلاغ عنها على نوع أداة الاستشعار. اطّلِع على تعريفات
نوع أداة الاستشعار
لمعرفة تفاصيل حول البيانات التي يتم تسجيلها لكل نوع من أنواع أدوات الاستشعار.
المستندات الحالية
تستهدف المطوّرين
- نظرة عامة
- مرجع حزمة SDK
- Stack Overflow والمواقع الإلكترونية التعليمية
- ولأنّ مستندات أجهزة الاستشعار كانت غير متوفرة في بعض الأحيان، لجأ المطوّرون
إلى مواقع إلكترونية للأسئلة والأجوبة مثل Stack Overflow للعثور على إجابات.
- تتوفّر أيضًا بعض المواقع الإلكترونية التي تتضمّن دروسًا، ولكنّها لا تتناول أحدث
الميزات، مثل تجميع العناصر والحركات المهمة ومصادر دوران الألعاب.
- لا تكون الإجابات الواردة في هذه المراجع صحيحة دائمًا، وتوضّح الحالات التي تحتاج إلى مزيد من مستندات الاعتماد.
تستهدف الشركات المصنّعة
- نظرة عامة
- طبقة تجريد الأجهزة (HAL)
- مستند CDD (مستند تعريف التوافق) لنظام التشغيل Android
- /compatibility/android-cdd.pdf
- اطّلِع على الأقسام ذات الصلة بأجهزة الاستشعار.
- إنّ معايير CDD متساهلة، لذا فإنّ استيفاء متطلباتها ليس كافيًا لضمان
جودة عالية للأجهزة الاستشعارية.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Sensors\n\nAndroid sensors give applications access to a mobile device's underlying\nphysical sensors. They are data-providing virtual devices defined by [sensors.h](https://android.googlesource.com/platform/hardware/libhardware/+/android16-release/include/hardware/sensors.h), the sensor Hardware Abstraction Layer (HAL).\n\nWhat are Android sensors?\n-------------------------\n\nAndroid sensors are virtual devices that provide data coming from a set of\nphysical sensors: accelerometers, gyroscopes, magnetometers, barometer, humidity,\npressure, light, proximity and heart rate sensors.\n\nNot included in the list of physical devices providing data are camera,\nfingerprint sensor, microphone, and touch screen. These devices have their own\nreporting mechanism; the separation is arbitrary, but in general, Android sensors\nprovide lower bandwidth data. For example, \"100hz x 3 channels\" for an\naccelerometer versus \"25hz x 8 MP x 3 channels\" for a camera or \"44kHz x 1\nchannel\" for a microphone.\n\nAndroid does not define how the different physical sensors are connected\nto the system on chip (SoC).\n\n- Often, sensor chips are connected to the SoC through a [sensor hub](/docs/core/interaction/sensors/sensor-stack#sensor_hub), allowing some low-power monitoring and processing of the data.\n- Often, Inter-Integrated Circuit (I2C) or Serial Peripheral Interface (SPI) is used as the transport mechanism.\n- To reduce power consumption, some architectures are hierarchical, with some minimal processing being done in the application-specific integrated circuit (ASIC - like motion detection on the accelerometer chip), and more is done in a microcontroller (like step detection in a sensor hub).\n- It is up to the device manufacturer to choose an architecture based on accuracy, power, price and package-size characteristics. See [Sensor stack](/docs/core/interaction/sensors/sensor-stack) for more information.\n- Batching capabilities are an important consideration for power optimization. See [Batching](/docs/core/interaction/sensors/batching) for more information.\n\nEach Android sensor has a \"type\" representing how the sensor behaves and\nwhat data it provides.\n\n- The official Android [Sensor\n types](/docs/core/interaction/sensors/sensor-types) are defined in [sensors.h](https://android.googlesource.com/platform/hardware/libhardware/+/android16-release/include/hardware/sensors.h) under the names SENSOR_TYPE_...\n - The vast majority of sensors have an official sensor type.\n - Those types are documented in the Android SDK.\n - Behavior of sensors with those types are tested in the Android Compatibility Test Suite (CTS).\n- If a manufacturer integrates a new kind of sensor on an Android device, the manufacturer can define its own temporary type to refer to it.\n - Those types are undocumented, so application developers are unlikely to use them, either because they don't know about them, or know that they are rarely present (only on some devices from this specific manufacturer).\n - They are not tested by CTS.\n - Once Android defines an official sensor type for this kind of sensor, manufacturers must stop using their own temporary type and use the official type instead. This way, the sensor will be used by more application developers.\n- The list of all sensors present on the device is reported by the HAL implementation.\n - There can be several sensors of the same type. For example, two proximity sensors or two accelerometers.\n - The vast majority of applications request only a single sensor of a given type. For example, an application requesting the default accelerometer will get the first accelerometer in the list.\n - Sensors are often defined by [wake-up](/docs/core/interaction/sensors/suspend-mode#wake-up_sensors) and [non-wake-up](/docs/core/interaction/sensors/suspend-mode#non-wake-up_sensors) pairs, both sensors sharing the same type, but differing by their wake-up characteristic.\n\nAndroid sensors provide data as a series of sensor events.\n\nEach [event](/docs/core/interaction/sensors/hal-interface#sensors_event_t)\ncontains:\n\n- a handle to the sensor that generated it\n- the timestamp at which the event was detected or measured, based on [`SystemClock.elapsedRealtimeNanos()`](https://developer.android.com/reference/android/os/SystemClock#elapsedRealtimeNanos())\n- and some data\n\nThe interpretation of the reported data depends on the sensor type. See\nthe [sensor type](/docs/core/interaction/sensors/sensor-types)\ndefinitions for details on what data is reported for each sensor type.\n\nExisting documentation\n----------------------\n\n### Targeted at developers\n\n- Overview\n - \u003chttps://developer.android.com/guide/topics/sensors/sensors_overview.html\u003e\n- SDK reference\n - \u003chttps://developer.android.com/reference/android/hardware/SensorManager\u003e\n - \u003chttps://developer.android.com/reference/android/hardware/SensorEventListener\u003e\n - \u003chttps://developer.android.com/reference/android/hardware/SensorEvent\u003e\n - \u003chttps://developer.android.com/reference/android/hardware/Sensor\u003e\n- Stack Overflow and tutorial websites\n - Because sensors documentation was sometimes lacking, developers resorted to Q\\&A websites like Stack Overflow to find answers.\n - Some tutorial websites exist as well, but do not cover the latest features like batching, significant motion and game rotation vectors.\n - The answers over there are not always right, and show where more documentation is needed.\n\n### Targeted at manufacturers\n\n- Overview\n - This [Sensors](/docs/core/interaction/sensors) page and its sub-pages.\n- Hardware abstraction layer (HAL)\n - [/platform/hardware/libhardware/+/android16-release/include/hardware/sensors.h](https://android.googlesource.com/platform/hardware/libhardware/+/android16-release/include/hardware/sensors.h)\n - Also known as \"sensors.h\"\n - The source of truth. First document to be updated when new features are developed.\n- Android CDD (Compatibility Definition Document)\n - [/compatibility/android-cdd.pdf](/static/docs/compatibility/android-cdd.pdf)\n - See sections relative to sensors.\n - The CDD is lenient, so satisfying the CDD requirements is not enough to ensure high quality sensors."]]