Android センサーは、アプリがモバイル デバイスの基盤となる物理センサーにアクセスできるようにします。このセンサーは、センサーの Hardware Abstraction Layer(HAL)である sensors.h によって定義されるデータ提供型仮想デバイスです。
Android センサーとは
Android センサーとは、一連の物理的なセンサー(加速度計、ジャイロスコープ、磁力計、気圧計、湿度センサー、圧力センサー、光センサー、近接センサー、心拍数センサー)からのデータを提供する仮想デバイスです。
カメラ、指紋認証センサー、マイク、タッチ スクリーンは、データを提供する実機のリストには含まれません。これらのデバイスには独自のレポート メカニズムがあります。分離するかどうかは任意ですが、一般に Android センサーは低帯域幅のデータを提供します。たとえば、加速度計では「100 hz x 3 チャンネル」であるのに対し、カメラは「25 hz x 8 MP x 3 チャンネル」、マイクは「44 kHz x 1 チャンネル」となります。
Android では、各種物理センサーをシステム オン チップ(SoC)に接続する方法は定義されません。
- 多くの場合、センサーチップはセンサーハブを介して SoC に接続され、これにより省電力でのデータのモニタリングと処理が実現されます。
- 多くの場合、集積回路間通信(I2C)またはシリアル ペリフェラル インターフェース(SPI)がトランスポート メカニズムとして使用されます。
- 消費電力を削減するために、一部のアーキテクチャは階層化されており、一部の最小の処理はアプリ固有の集積回路で行われ(ASIC - 加速度計チップでのモーション検出など)、それ以上の処理はマイクロコントローラで行われます(センサーハブでのステップ検出など)。
- アーキテクチャは、デバイス メーカーの裁量により、精度、電力、価格、パッケージ サイズなどの特性を考慮して選択されます。詳細については、センサー スタックをご覧ください。
- バッチ処理機能は、電力を最適化するうえで重要な検討項目となります。詳細については、バッチ処理をご覧ください。
Android センサーにはそれぞれの「タイプ」があり、それによってセンサーの動作や提供データがわかります。
- 公式の Android センサータイプは、sensors.h で SENSOR_TYPE_… という名前で定義されます。
- ほとんどのセンサーが、公式のセンサータイプに分類されています。
- これらのタイプは、Android SDK に記載されています。
- これらのタイプのセンサーの動作は、Android 互換性テストスイート(CTS)によりテストされます。
- メーカーが新しい種類の Android デバイス センサーを統合する場合、メーカーは、それを示す独自の一時タイプを定義できます。
- これらのタイプはドキュメントに記載されず、アプリ デベロッパーがそのタイプのセンサーのことを知らないか、ほとんどのデバイスに搭載されていないと考えるため(この特定のメーカーの一部のデバイスにのみ搭載されていると考えるなど)、デベロッパーがそのタイプのセンサーを使用することはほとんどありません。
- これらは CTS によりテストされません。
- Android がこの種類のセンサーに公式のセンサータイプを定義した場合、メーカーは独自の一時タイプの使用を中止し、代わりに公式のタイプを使用する必要があります。公式のタイプを使用することで、より多くのアプリ デベロッパーがそのセンサーを使用するようになります。
- デバイスに搭載されているすべてのセンサーのリストは、HAL 実装によってレポートされます。
Android センサーは、データを一連のセンサー イベントとして提供します。
各イベントには次のものが含まれます。
- そのイベントを生成したセンサーへのハンドル
- そのイベントが検出または測定されたタイムスタンプ(
SystemClock.elapsedRealtimeNanos()
に基づく) - その他のデータ
レポートされるデータの解釈は、センサータイプによって異なります。各センサータイプのレポート対象データの詳細については、センサータイプの定義をご覧ください。
既存のドキュメント
デベロッパー向け
- 概要
- SDK リファレンス
- スタック オーバーフローとチュートリアルのウェブサイト
- センサーのドキュメントの中には、情報が不足しているものもありました。そのためデベロッパーは Stack Overflow などの Q&A ウェブサイトで情報を見つけていました。
- チュートリアル ウェブサイトもいくつか存在しますが、バッチ処理、大きなモーション、ゲーム回転ベクトルなどの最新の機能は扱われていません。
- これらの外部サイトの情報は必ずしも正しいとは限りません。また、他のドキュメントが必要となる場合もあります。
メーカー向け
- 概要
- このセンサーページとそのサブページ。
- Hardware Abstraction Layer(HAL)
- /platform/hardware/libhardware/+/main/include/hardware/sensors.h
- 「sensors.h」とも呼ばれます。
- 信頼できる情報源です。また、新機能が開発されたとき最初に更新されるドキュメントでもあります。
- Android CDD(互換性定義ドキュメント)
- /compatibility/android-cdd.pdf
- センサーに関連するセクションをご覧ください。
- CDD は条件が緩いため、CDD の要件を満たしただけでは高品質なセンサーを実現することはできません。