Google は、黒人コミュニティに対する人種平等の促進に取り組んでいます。取り組みを見る
このページは Cloud Translation API によって翻訳されました。
Switch to English

センサータイプ

このセクションでは、センサ軸、ベースセンサ、および複合センサ(活動、姿勢、較正されていない、との相互作用)について説明します。

センサの軸

多数のセンサからのセンサイベントの値は、デバイスに静的相対的である特定のフレームで発現されます。

モバイルデバイス軸

センサーAPIをするとき、デバイスの画面の向きの変更軸がスワップされていない(画面だけの自然な向きに相対的です。

モバイルデバイス用のセンサーAPIの座標系

図は、センサAPIによって使用されるシステム(モバイルデバイスに対して)座標1

自動車の軸

アンドロイド自動車の実装では、軸が車体フレームに対して定義されています。

車載機器用のセンサーAPIの座標系

図は、センサAPIによって使用されるシステム(車載装置に対して)座標2.

  • Xは、車両の右側に向かって増大します
  • Yは、車体フレームの鼻に向かって増大します
  • 車体フレームの屋根に向かってZ増加

座標系の原点は車両の後車軸の中心に位置しています。軸の正の方向から見た場合には、正回転は反時計回りです。車両が左旋回を行っているときにこのように、ターンのz軸ジャイロスコープ速度が正の値であると予想されます。

ベースセンサー

基本センサタイプは、それらが表す物理センサーにちなんで命名されています。これらのセンサは、(他のセンサからのデータを生成する複合センサとは対照的に)単一の物理的センサからのデータを中継します。ベースセンサタイプの例としては、

  • SENSOR_TYPE_ACCELEROMETER
  • SENSOR_TYPE_GYROSCOPE
  • SENSOR_TYPE_MAGNETOMETER

しかし、ベースセンサは等しくなく、その基礎となる物理的センサと混同してはなりません。 (そのようなバイアス補償と温度補償など)補正が適用されるため、ベースのセンサからのデータは、物理量センサの生出力されません。

例えば、ベースセンサの特性は以下のユースケースにおけるその基礎となる物理的センサの特性とは異なるかもしれません。

  • ジャイロスコープチップが1℃/秒のバイアス範囲を有するように評価しました。
    • 工場出荷時のキャリブレーション、温度補償バイアス補償後、Androidのセンサの実際の偏りが低減され、印加されるバイアスは0.01°/秒未満であることが保証されている点にあってもよいです。
    • この状況では、我々は、Androidセンサは、基礎となるセンサのデータシートは、1℃/秒で前記にもかかわらず、0.01°/秒以下のバイアスを持っていることを言います。
  • 100 UWの消費電力とのバロメーター。
    • 生成されたデータのニーズは、SoCのにチップから輸送されるので、バロメーターAndroidのセンサーからのデータを収集するために、実際の電力コストは、例えば、1000年UWのために、はるかに高いかもしれません。
    • このような状況で、我々はバロメーターチップリード線で測定された消費電力が100uWであっても、Androidのセンサーが1000 UWの消費電力を持っていると言います。
  • 校正時に100uWを消費磁力計が、キャリブレーションより消費。
    • そのキャリブレーション・ルーチンは、ジャイロスコープを活性化5000 UWを消費して、いくつかのアルゴリズムを実行し、別の900 UWの原価計算が必要な場合があります。
    • このような状況で、我々は(磁力)の最大消費電力のAndroidセンサーは、6000 UWであると言います。
    • この場合、平均消費電力は、より有用な尺度であり、それは、HALを介してセンサ静特性で報告されたものです。

加速度センサー

レポーティングモード: 連続

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER) 非ウェイクアップセンサーを返します。

加速度センサーは、3つのセンサ軸に沿ったデバイスの加速度を報告します。測定された加速度は、物理的な加速度(速度の変化)と重力の両方を含みます。測定はsensors_event_t.accelerationのX、Y、Zフィールドに報告されています。

すべての値は、SI単位である(M / S ^ 2)と、デバイスの加速度マイナス3つのセンサ軸に沿った重力の力を測定します。

ここでの例は以下のとおりです。

  • (x、y、z)のノルムは場合自由落下0に近くなければなりません。
  • デバイスが位置テーブル上平坦では右に向かって、その左側に押されると、X加速度値が正です。
  • テーブル上のときにデバイスの嘘フラット、Zに沿った加速度値は、デバイス(0 M / S ^ 2)マイナス重力の力(-9.81 M / S ^ 2)の加速度に相当する9.81 ALO、です。
  • デバイスが位置テーブル上平坦では空に向かって押されると、加速度値は、装置の加速度にどの対応する(+ A M / S ^ 2)マイナス重力の力(-9.81 M、9.81よりも大きいです/秒^ 2)。

読み取りは、使用して較正されています。

  • 温度補償
  • オンラインバイアスキャリブレーション
  • オンラインスケール・キャリブレーション

センサが非活性化されている間、バイアスおよびスケールキャリブレーションは、ストリーミング中に値のジャンプを引き起こす回避するように、更新されなければなりません。

加速度計はまた、その測定値を通過ことを期待どのように正確なレポートsensors_event_t.acceleration.status 。参照してくださいSensorManagerさんSENSOR_STATUS_*このフィールドに使用可能な値の詳細については、定数を。

周囲温度

レポーティングモード: オン変更

getDefaultSensor(SENSOR_TYPE_AMBIENT_TEMPERATURE) 非ウェイクアップセンサーを返します。

このセンサーは摂氏で周囲温度(室温)を提供します。

磁界センサ

レポーティングモード: 連続

getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD) 非ウェイクアップセンサーを返します。

SENSOR_TYPE_GEOMAGNETIC_FIELD == SENSOR_TYPE_MAGNETIC_FIELD

3つのセンサ軸に沿って測定される(また、磁力計としても知られる)磁界センサは、周囲の磁界を報告します。

測定は、X、Y、Zフィールドに報告されsensors_event_t.magnetic 、すべての値は、マイクロテスラ(UT)にあります。

磁力計はまた、その測定値を通過ことを期待どのように正確なレポートsensors_event_t.magnetic.status 。参照してくださいSensorManagerさんSENSOR_STATUS_*このフィールドに使用可能な値の詳細については、定数を。

読み取りは、使用して較正されています。

  • 温度補償
  • ファクトリー(またはオンライン)軟鉄キャリブレーション
  • オンラインハードアイアン校正

ジャイロスコープ

レポーティングモード: 連続

getDefaultSensor(SENSOR_TYPE_GYROSCOPE) 非ウェイクアップセンサーを返します。

ジャイロセンサーは、3つのセンサの軸の周りにデバイスの回転速度を報告します。

回転は、反時計方向(右手の法則)で正です。デバイスは、反時計回りに回転するように見えた場合つまり、原点に位置する装置のX、Y、Z軸上のいくつかの正位置から見た観察者は、正回転を報告します。これは、正回転の標準的な数学的な定義であるとロールの航空宇宙の定義と一致しないことに注意してください。

測定は、X、Y、及びZの分野で報告されsensors_event_t.gyro 、すべての値は、(ラジアン/秒)ラジアン毎秒です。

読み取りは、使用して較正されています。

  • 温度補償
  • ファクトリー(またはオンライン)スケール補正
  • オンラインバイアスキャリブレーション(削除ドリフト)

ジャイロスコープはまた、その測定値を通過ことを期待どのように正確なレポートsensors_event_t.gyro.status 。参照してくださいSensorManagerさんSENSOR_STATUS_*このフィールドに使用可能な値の詳細については、定数を。

これは、それが地元の一貫性と応答性を低減していることが原因となるようジャイロスコープは、磁力計および加速度計に基づいてエミュレートすることはできません。これは、通常のジャイロスコープチップに基づいている必要があります。

心拍数

レポーティングモード: オン変更

getDefaultSensor(SENSOR_TYPE_HEART_RATE) 非ウェイクアップセンサーを返します。

心拍センサーは、デバイスに触れた人の現在の心拍数を報告します。

分当たりのビートで現在の心拍数(BPMは)で報告されsensors_event_t.heart_rate.bpmとセンサーのステータスがで報告されsensors_event_t.heart_rate.status 。参照してくださいSensorManagerさんSENSOR_STATUS_*このフィールドに使用可能な値の詳細については、定数を。装置が身体にならないことが知られていない限り特に、第1の起動時に、最初のイベントの状態フィールドをに設定する必要がありSENSOR_STATUS_UNRELIABLE 。このセンサーは、上の変更であるため、イベントが時に生成されたときにのみheart_rate.bpmまたはheart_rate.status最後のイベント以降に変更されました。イベントは速く、すべてのよりも生成されませんsampling_period

sensor_t.requiredPermission常にあるSENSOR_PERMISSION_BODY_SENSORS

レポーティングモード: オン変更

getDefaultSensor(SENSOR_TYPE_LIGHT) 非ウェイクアップセンサーを返します。

光センサは、SIルクス単位で現在の照明を報告します。

測定がで報告されsensors_event_t.light

近接

レポーティングモード: オン変更

通常、ウェイクアップセンサーと定義

getDefaultSensor(SENSOR_TYPE_PROXIMITY) ウェイクアップセンサーを返します。

近接センサは、最も近い可視表面に対するセンサからの距離を報告します。

アンドロイド4.4までは、近接センサは常にウェイクアップされたセンサーを、近接の変化を検出する際のSoCを覚まします。アンドロイド4.4の後、我々はそれが電話をしながらオンとオフスクリーンを回すために使用されている一つだとして、最初にこのセンサのウェイクアップバージョンを実装することをお勧めします。

測定はセンチメートルで報告されsensors_event_t.distance 。いくつかの近接センサのみか、「これまで」測定「の近くに」バイナリをサポートすることに注意してください。この場合、センサーレポートそのsensor_t.maxRange 「はるか」状態の値よりも小さい値sensor_t.maxRange 「近い」状態となります。

圧力

レポーティングモード: 連続

getDefaultSensor(SENSOR_TYPE_PRESSURE) 非ウェイクアップセンサーを返します。

(また、気圧計としても知られる)圧力センサはヘクトパスカル(HPA)で気圧を報告します。

読み取りは、使用して較正されています

  • 温度補償
  • 工場バイアスキャリブレーション
  • 工場スケール・キャリブレーション

バロメーターは、多くの場合、標高の変化を推定するために使用されます。絶対標高を推定するために、(天候に応じて変更)海面圧力が基準として使用されなければなりません。

相対湿度

レポーティングモード: オン変更

getDefaultSensor(SENSOR_TYPE_RELATIVE_HUMIDITY) 非ウェイクアップセンサーを返します。

相対湿度センサ測定相対大気湿度戻るパーセント値。

複合センサタイプ

複合センサは、処理および/または1つのまたは複数の物理センサからのデータを融合することによってデータを生成します。 (ベースセンサではない任意のセンサが複合センサと呼ばれる。)複合センサの例は:

  • ステップ検出器有意な動き通常、加速度計に基づいているが、消費電力と精度が許容可能である場合、同様に他のセンサに基づくことができます。
  • ゲームの回転ベクトル加速度計とジャイロスコープに基づいて、。
  • 未較正ジャイロスコープジャイロスコープベースセンサと同様であるが、バイアス較正された状態ではなく、測定に修正されるので別々に報告しました。

ベースセンサと同様に、複合センサの特徴は、それらの最終的なデータの特徴から来。例えば、ゲームの回転ベクトルの消費電力は、おそらく加速度計チップ、ジャイロチップ、データ処理チップ、及びデータを転送するバスの消費電力の和に等しいです。別の例として、ゲームの回転ベクトルのドリフトは、物理的センサ特性にとして較正アルゴリズムの品質に限り依存します。

次の表は、使用可能な複合センサの種類を示しています。各複合センサは、1つまたはいくつかの物理的センサからのデータに依存しています。彼らは貧しいユーザーエクスペリエンスを提供として、おおよその結果に他の基礎となる物理センサーを選択することは避けてください。

センサタイプカテゴリー基礎となる物理センサーレポーティングモード

ゲームの回転ベクトル

姿勢

加速度計、ジャイロスコープ、MUST NOTを使用磁力

連続

地磁気回転ベクトル 低電力センサ

姿勢

加速度計、磁力計、MUST NOTを使用ジャイロスコープ

連続

概要ジェスチャー 低電力センサ

インタラクション

未定義

ワンショット

重力

姿勢

加速度計、ジャイロスコープ

連続

ジャイロキャリブレーションされていません

未校正

ジャイロスコープ

連続

リニア加速

アクティビティ

加速度計、ジャイロスコープ(存在する場合)、または磁力計(ジャイロ存在しない場合)

連続

磁場キャリブレーションされていません

未校正

磁力

連続

オリエンテーション (非推奨)

姿勢

加速度計、磁力計、ジャイロスコープ(存在する場合)

連続

ジェスチャーをピックアップ 低電力センサ

インタラクション

未定義

ワンショット

回転ベクトル

姿勢

加速度計、磁力計、ジャイロスコープ

連続

重要な運動 低電力センサ

アクティビティ

加速度計(または長い、非常に低消費電力などのように、別の)

ワンショット

ステップカウンタ 低電力センサ

アクティビティ

加速度センサー

オン変更

ステップ検出器 低電力センサ

アクティビティ

加速度センサー

特殊な

傾斜検出器 低電力センサ

アクティビティ

加速度センサー

特殊な

ジェスチャーを覚まします 低電力センサ

インタラクション

未定義

ワンショット

低電力センサ =低消費電力センサ

活性複合センサ

リニア加速

物理的センサの基礎となる:加速度計及びジャイロスコープ(または磁力計、ジャイロスコープに存在しない場合)(存在する場合)

レポーティングモード: 連続

getDefaultSensor(SENSOR_TYPE_LINEAR_ACCELERATION) 非ウェイクアップセンサーを返します。

リニア加速度センサは、重力を含まないセンサフレームにおけるデバイスの線形加速度を、報告します。

出力は概念的である:の出力加速度計マイナスの出力重力センサー 。これは、X、Y、及びZの分野でM / S ^ 2で報告されていますsensors_event_t.acceleration

デバイスは不動であるとき、全ての軸の測定値が0に近いはずです。

デバイスは、ジャイロスコープを有する場合、リニア加速度センサは、入力として、ジャイロスコープと加速度計を使用しなければなりません。

デバイスは、ジャイロスコープを持たない場合は、リニア加速度センサは、入力として、加速度計及び磁力計を使用しなければなりません。

重要な運動

基礎となる物理量センサ:加速度計(または長い低電力などのような別の)

レポーティングモード: ワンショット

低電力

このセンサーの唯一のウェイクアップバージョンを実装します。

getDefaultSensor(SENSOR_TYPE_SIGNIFICANT_MOTION) ウェイクアップセンサーを返します。

ユーザーの位置の変更につながる可能性がある運動:大きな動き検出器のトリガーは大きな動きを検出するとき。

そのような重要な動きの例は以下のとおりです。

  • ウォーキングやサイクリング
  • 走行中の車、コーチ、または電車の中で座って

重要な動きを誘発しない状況の例:

  • ポケットや人で電話が動いていません
  • 電話番号は、テーブルの上にあり、テーブルが原因近くのトラフィックや洗濯機にビットを振ります

ハイレベルで、有意な動き検出器は、位置決意の消費電力を低減するために使用されます。ローカリゼーション・アルゴリズムは、デバイスが静的であることを検出すると、彼らは、ユーザが場所を変更されたときにデバイスをウェイクアップするために有意な動きに依存して低消費電力モードに切り替えることができます。

このセンサは、低消費電力である必要があります。これは、偽陰性の少量になることがあり、消費電力のためのトレードオフになります。これは、いくつかの理由のために行われます。

  • このセンサーの目標は、電力を節約することです。
  • それは避けなければならないので、ユーザは(偽陽性)が動いていないイベントをトリガすることは、消費電力の面でコストがかかります。
  • ユーザーが(偽陰性)を移動されるイベントをトリガしないと、限り、それは繰り返し行われていないとして許容可能です。ユーザーが10秒間歩いてきた場合には、それらの10秒以内にイベントをトリガーないことが受け入れられません。

各センサイベントレポート1sensors_event_t.data[0]

ステップ検出器

物理的センサの基礎となる:加速度(+おそらく他の長い低電力などのような)

レポーティングモード: 特殊 (撮影したステップごとに1件のイベント)

低電力

getDefaultSensor(SENSOR_TYPE_STEP_DETECTOR) 非ウェイクアップセンサーを返します。

ステップ検出器は、イベントをステップは、ユーザによって取られるたびに発生します。

イベントのタイムスタンプsensors_event_t.timestamp足が加速度の高い変化を生成、地面を打つときに相当します。

ステップカウンタと比較し、ステップ検出器は、低遅延(2秒未満)を有するべきです。ユーザーが実行している、と階段を歩いて、歩いているとき、ステップ検出器とステップカウンタの両方が検出します。彼らは、ユーザーが、自転車走行、または他の車両にされたときにトリガしてはいけません。

このセンサは、低消費電力である必要があります。ステップ検出がハードウェアで実行することができない場合には、このセンサは、定義されるべきではないれています。具体的には、ステップ検出器が活性化された加速度計がない場合には、唯一のステップは、割り込み(必ずしもすべての加速度計の読み)をトリガーします。

sampling_period_nsステップ検出器には影響を与えません。

各センサイベントレポート1sensors_event_t.data[0]

ステップカウンタ

物理的センサの基礎となる:加速度(+おそらく他の長い低電力などのような)

レポーティングモード: オン変更

低電力

getDefaultSensor(SENSOR_TYPE_STEP_COUNTER) 非ウェイクアップセンサーを返します。

ステップカウンタは、活性化しながら最後にリブートしてから、ユーザによって取られるステップの数を報告します。

測定は以下のように報告されているuint64_tsensors_event_t.step_counterのみ、システム再起動時にゼロにリセットされます。

イベントのタイムスタンプは、そのイベントの最後のステップが取られた時に設定されています。

参照してください。ステップの検出ステップの時間の意義についてセンサータイプを。

ステップ検出器に比べて、ステップカウンタは、より高いレイテンシ(10秒まで)を有することができます。このレイテンシーのおかげで、このセンサーは精度が高いです。対策の一日後のステップ数は、実際のステップ数の10%以内でなければなりません。ユーザーが実行している、と階段を歩いて、歩いているとき、ステップ検出器とステップカウンタの両方が検出します。彼らは、ユーザーが、自転車走行、または他の車両にされたときにトリガしてはいけません。

ハードウェアは、内部のステップ数がオーバーフローしたことがないことを確認しなければなりません。ハードウェアの内部カウンタの最小サイズは16ビットでなければなりません。ドライバーはカウンターのメンテナンスを行うことができますので、(ほとんどすべての〜2 ^ 16段階で)差し迫ったオーバーフローの場合には、SoCがウェイクアップすることができます。

で述べたように相互作用このセンサーが作動している間、それは他のセンサーを妨害してはならない、特に、加速度計、非常によく、使用中であるかもしれません。

特定のデバイスは、これらの動作モードをサポートすることができない場合は、このセンサの種類は、HALによって報告されてはなりません。つまり、それはHALで、このセンサー「エミュレート」には受け入れられません。

このセンサは、低消費電力である必要があります。ステップ検出がハードウェアで実行することができない場合には、このセンサは、定義されるべきではないれています。具体的には、ステップカウンタが起動され、加速度がない場合には、唯一のステップは、(データではなく、加速度計)割り込みをトリガーします。

傾斜検出器

物理的センサの基礎となる:加速度(+おそらく他の長い低電力などのような)

レポーティングモード: 特殊

低電力

このセンサーの唯一のウェイクアップバージョンを実装します。

getDefaultSensor(SENSOR_TYPE_TILT_DETECTOR) ウェイクアップセンサーを返します。

傾斜検出器は、イベントをチルトイベントが検出されるたびに発生します。

チルトイベントは、活性化またはセンサによって生成された最後のイベント以来、少なくとも35度の2秒窓平均重力変化の方向によって規定されます。ここでアルゴリズムは次のとおりです。

  • reference_estimated_gravity =最後チルトイベントが生成された活性化または推定重力後の最初の秒以上の加速度計の測定値の平均値。
  • current_estimated_gravity =最後の2秒を超える加速度計の測定値の平均。
  • トリガーangle(reference_estimated_gravity, current_estimated_gravity) > 35 degrees

携帯電話の向きの変化のない大きな加速度がチルトイベントをトリガしてはいけません。例えば、急カーブや強い加速車を運転中は平均加速度の角度以上35度によって異なる場合でも、チルトイベントをトリガしてはなりません。通常、このセンサーは加速度計の助けを借りて実装されています。彼らは大幅に消費電力を増加させない場合は、他のセンサを用いることもできます。これは、SOCがサスペンドモードに入ることを許可する必要があり、低電力センサです。 HALは、このセンサーをエミュレートしないでください。各センサイベントレポート1sensors_event_t.data[0]

姿勢複合センサー

回転ベクトル

基礎となる物理センサー:加速度計、磁力計、ジャイロスコープ

レポーティングモード: 連続

getDefaultSensor(SENSOR_TYPE_ROTATION_VECTOR) 非ウェイクアップセンサーを返します。

回転ベクトルセンサーは、東・北アップ座標フレームにデバイスの向きを報告します。これは通常、加速度計、ジャイロスコープ、および磁力計の測定値の統合によって得られています。東北アップ座標系はどこ直接正規直交基底のように定義されます。

  • Xは東点と接地に対して接線方向です。
  • Yは北ポイントと地面に接線方向です。
  • Z点空に向かってと地面に垂直です。

携帯電話の向きは、携帯電話の座標と東ノースアップ座標を揃えるために必要な回転で表されます。すなわち、電話座標(x、y、z)でそれらを整列させるであろう世界のフレーム(X、Y、Z)に回転を適用すること、です。

回転軸周りに角度θによって電話を回転させると見なすことができるrot_axis基準から移動するために、現在のデバイスの向きに装置の向きを(イーストノースアップ整列しました)。 :回転は単位四元数の4つの単位レスX、Y、Z、Wコンポーネントとして符号化されます

  • sensors_event_t.data[0] = rot_axis.x*sin(theta/2)
  • sensors_event_t.data[1] = rot_axis.y*sin(theta/2)
  • sensors_event_t.data[2] = rot_axis.z*sin(theta/2)
  • sensors_event_t.data[3] = cos(theta/2)

どこ:

  • x、y及びzフィールドrot_axis回転軸を表す単位長ベクトルのイーストノースアップ座標であります
  • theta 、回転角であります

四元数は単位四元である:それは当たり前のものでなければならない1 。これを確実に失敗すると、不安定なクライアントの動作が発生します。

また、このセンサーは推測方位精度を報告します。

sensors_event_t.data[4] = estimated_accuracy (ラジアン)

方位誤差はより小さくなければなりませんestimated_accuracy時間の95%。このセンサは、メインの姿勢変化を入力として、ジャイロスコープを使用する必要があります。

このセンサは、ジャイロスコープのドリフトを補うために加速度計や磁力計の入力を使用し、それが唯一の加速度計や磁力計を使用して実装することはできません。

ゲームの回転ベクトル

根底にある物理的センサ:加速度計とジャイロスコープ(NO磁力)

レポーティングモード: 連続

getDefaultSensor(SENSOR_TYPE_GAME_ROTATION_VECTOR) 非ウェイクアップセンサーを返します。

ゲーム回転ベクトルセンサは、回転ベクトルセンサと同様であるが、地球磁場を使用していません。したがって、Yは、軸線いくつかの他の基準に北ではなく指していません。その基準は、Z軸周りのジャイロスコープのドリフトと同程度の大きさによってドリフトさせます。

参照してください。 回転ベクトルの設定方法の詳細については、センサーsensors_event_t.data[0-3]このセンサは、推測方位の精度を報告しない。 sensors_event_t.data[4]予約されており、に設定されるべきである0

理想的な場合には、電話が回転し、同じゲームの回転ベクトルを報告する必要があり、同じ実世界のオリエンテーションに戻りました。

このセンサは、ジャイロスコープと加速度計に基づくものでなければなりません。これは、ジャイロバイアスの推定を介して、間接的に、また、入力として磁力計を使用することはできません。

重力

物理的センサの基礎となる:加速度計及びジャイロスコープ(または磁力計、ジャイロスコープに存在しない場合)(存在する場合)

レポーティングモード: 連続

getDefaultSensor(SENSOR_TYPE_GRAVITY) 非ウェイクアップセンサーを返します。

重力センサーは、デバイスの座標内における重力の方向と大きさを報告します。

重力ベクトル成分は、X、Y、及びZの分野でM / S ^ 2に報告されているsensors_event_t.acceleration

デバイスが静止しているときに、重力センサの出力は、加速度計のものと同一であるべきです。地球上で、大きさは約9.8メートル/秒^ 2です。

デバイスは、ジャイロスコープを有する場合、重力センサは、入力として、ジャイロスコープと加速度計を使用しなければなりません。

デバイスは、ジャイロスコープを持たない場合、重力センサは、入力として、加速度計及び磁力計を使用しなければなりません。

地磁気回転ベクトル

根底にある物理的センサ:加速度計及び磁力計(NOジャイロスコープ)

レポーティングモード: 連続

低電力

getDefaultSensor(SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR) 非ウェイクアップセンサーを返します。

地磁気回転ベクトルは、回転ベクトルセンサと同様であるが、磁力計、ノージャイロスコープを使用して。

このセンサは、磁力計に基づいている必要があります。これは、ジャイロスコープを使用して実施することができず、ジャイロスコープの入力は、このセンサーで使用することができません。

参照してください。 回転ベクトルの設定方法の詳細については、センサーsensors_event_t.data[0-4]

だけ回転ベクトルセンサのような、方位誤差は少ない推定精度(以下でなければならないsensors_event_t.data[4]は、時間の95%です。

それはハードウェアに実装する必要があるように、このセンサは、低消費電力である必要があります。

オリエンテーション(非推奨)

根底にある物理的センサ:加速度計、磁力計、および(存在する場合)ジャイロスコープ

レポーティングモード: 連続

getDefaultSensor(SENSOR_TYPE_ORIENTATION) 非ウェイクアップセンサーを返します。

注:これは、AndroidのSDKに廃止されました古いセンサタイプです。これは、より明確に定義された回転ベクトルセンサー、置き換えられています。可能な限り、方位センサー上で回転ベクトルセンサーを使用してください。

方位センサは、装置の姿勢を報告します。測定は、X、Y、及びZの分野で、度で報告されているsensors_event_t.orientation

  • sensors_event_t.orientation.x :方位、磁北方向とY軸との間の角度、Z軸回り( 0<=azimuth<360 )。 0 =北、90 =東、180 =南、270 =西。
  • sensors_event_t.orientation.y :ピッチは、X周りの回転は、(軸-180<=pitch<=180 Zは、Y軸に向かって移動し、軸ときに正の値を有します)。
  • sensors_event_t.orientation.z :ロールは、Yの周りの回転は、(軸-90<=roll<=90 Xは、Z軸方向に向かって移動し、軸ときに正の値を有する)を、。

ノートでは、歴史的な理由のためにロール角が時計回り方向に正でください。 (数学的に言えば、それは反時計回り方向に正でなければなりません)。

デバイスへの相対的な向きの描写

デバイスに対して図3のオリエンテーション

この定義は、ヨー、ピッチ、及びX軸は平面(鼻に尾)の長辺に沿って航空機に使用されるロールは異なります。

方位センサはまた、その測定値を通過ことを期待どのように正確なレポートsensors_event_t.orientation.status 。参照してくださいSensorManagerさんSENSOR_STATUS_*このフィールドに使用可能な値の詳細については、定数を。

未校正センサー

未較正のセンサは、より生の結果を提供し、いくつかのバイアスを含むだけでなく、キャリブレーションを介して印加補正から「ジャンプ」少数を含むことができます。いくつかのアプリは、よりスムーズで信頼性の高いこれらのキャリブレーションされていない結果を好むかもしれません。アプリは、独自のセンサフュージョンを実施しようとしている場合例えば、導入のキャリブレーションは、実際の結果を歪めることができます。

加速度センサーキャリブレーションされていません

基礎となる物理センサー:加速度センサー

レポーティングモード: 連続

getDefaultSensor(SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED) 非ウェイクアップセンサーを返します。

未較正加速度センサは、バイアス推定値と一緒に、任意のバイアス補正(工場出荷時のバイアス・温度補償が未較正測定値に適用される)ことなく、3つのセンサ軸に沿ったデバイスの加速度を報告します。すべての値は、SI単位である(M / S ^ 2)の分野で報告されているsensors_event_t.uncalibrated_accelerometer

  • x_uncalib :X軸に沿って(バイアス補償なし)加速度
  • y_uncalib :Y軸に沿って(バイアス補償なし)加速度
  • z_uncalib :Z軸に沿って(バイアス補償なし)加速度
  • x_bias :X軸に沿った推定バイアス
  • y_bias :Y軸に沿ってバイアス推定
  • z_bias :Z軸に沿ってバイアス推定

ジャイロキャリブレーションされていません

基礎となる物理センサー:ジャイロ

レポーティングモード: 連続

getDefaultSensor(SENSOR_TYPE_GYROSCOPE_UNCALIBRATED) 非ウェイクアップセンサーを返します。

キャリブレーションされていないジャイロスコープは、バイアス推定値とともに、それらにバイアス補償を適用せずにセンサー軸の周りの回転速度を報告します。すべての値はラジアンで/秒であり、の分野で報告されているsensors_event_t.uncalibrated_gyro

  • x_uncalib :(ドリフト補償なし)X軸周りの角速度
  • y_uncalib :(ドリフト補償なし)Y軸周りの角速度
  • z_uncalib :(ドリフト補償なし)Z軸周りの角速度
  • x_bias :X軸まわりの推定ドリフト
  • y_bias :Y軸周りの推定ドリフト
  • z_bias :Z軸を中心と推定ドリフト

:概念的に、未較正測定は、較正された測定値とバイアス推定値の和である_uncalibrated = _calibrated + _bias

x_biasy_biasz_bias値は、バイアスの変化の推定値とすぐにジャンプすることが期待されている、と彼らは残りの時間安定であるべきです。

定義を参照してくださいジャイロスコープの使用される座標系の詳細については、センサーを。

工場較正と温度補償が測定値に適用されなければなりません。また、ジャイロスコープドリフト推定は、合理的な見積もりがで報告できるように実装する必要がありますx_biasy_biasz_bias 。実装はドリフトを推定することができない場合、このセンサーが実装されてはなりません。

このセンサが存在する場合、対応するジャイロセンサも存在しなければならず、両方のセンサが同じ共有する必要がありsensor_t.namesensor_t.vendor値。

磁場キャリブレーションされていません

基礎となる物理センサー:磁力

レポーティングモード: 連続

getDefaultSensor(SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED) 非ウェイクアップセンサーを返します。

未校正の磁界センサはハードアイアン校正の見積もりと一緒に周囲の磁場を報告します。すべての値は、マイクロテスラ(UT)にあるとの分野で報告されているsensors_event_t.uncalibrated_magnetic

  • x_uncalib :(ハード鉄補償なし)磁場X軸に沿って
  • y_uncalib :Y軸に沿って(ハード鉄補償なし)磁場
  • z_uncalib :(ハード鉄補償なし)磁場Z軸に沿って
  • x_bias :X軸に沿った推定ハードアイアンバイアス
  • y_bias :Y軸に沿った推定ハードアイアンバイアス
  • z_bias :Z軸に沿って推定ハードアイアンバイアス

:概念的に、未較正測定は、較正された測定値とバイアス推定値の和である_uncalibrated = _calibrated + _bias

キャリブレーションされていない磁力計は、より高いレベルのアルゴリズムが悪い硬い鉄の推定を処理することができます。 x_biasy_biasz_bias値は、ハードアイアンの変化の推定値とすぐにジャンプすることが期待されている、と彼らは残りの時間安定であるべきです。

軟鉄較正および温度補償測定値に適用されなければなりません。また、ハードアイアン推定は、合理的な見積もりがで報告できるように実装する必要がありますx_biasy_biasz_bias 。実装はバイアスを推定することができない場合、このセンサが実装されてはなりません。

このセンサが存在する場合、対応する磁場センサが存在しなければならず、両方のセンサが同じ共有する必要がありsensor_t.namesensor_t.vendor値。

相互作用複合センサー

いくつかのセンサは、ほとんどのユーザーとの相互作用を検出するために使用されています。 We don't define how those sensors must be implemented, but they must be low power and it's the responsibility of the device manufacturer to verify their quality in terms of user experience.

Wake up gesture

Underlying physical sensors: Undefined (anything low power)

Reporting-mode: One-shot

Low-power

Implement only the wake-up version of this sensor.

getDefaultSensor(SENSOR_TYPE_WAKE_GESTURE) returns a wake-up sensor

A wake up gesture sensor enables waking up the device based on a device specific motion. When this sensor triggers, the device behaves as if the power button was pressed, turning the screen on. This behavior (turning on the screen when this sensor triggers) might be deactivated by the user in the device settings. Changes in settings don't impact the behavior of the sensor: only whether the framework turns the screen on when it triggers. The actual gesture to be detected isn't specified, and can be chosen by the manufacturer of the device.

This sensor must be low power, as it's likely to be activated 24/7.

Each sensor event reports 1 in sensors_event_t.data[0] .

Pick up gesture

Underlying physical sensors: Undefined (anything low power)

Reporting-mode: One-shot

Low-power

Implement only the wake-up version of this sensor.

getDefaultSensor(SENSOR_TYPE_PICK_UP_GESTURE) returns a wake-up sensor

A pick-up gesture sensor triggers when the device is picked up regardless of wherever it was before (desk, pocket, bag).

Each sensor event reports 1 in sensors_event_t.data[0] .

Glance gesture

Underlying physical sensors: Undefined (anything low power)

Reporting-mode: One-shot

Low-power

Implement only the wake-up version of this sensor.

getDefaultSensor(SENSOR_TYPE_GLANCE_GESTURE) returns a wake-up sensor

A glance gesture sensor enables briefly turning the screen on to enable the user to glance content on screen based on a specific motion. When this sensor triggers, the device will turn the screen on momentarily to allow the user to glance notifications or other content while the device remains locked in a non-interactive state (dozing), then the screen will turn off again. This behavior (briefly turning on the screen when this sensor triggers) might be deactivated by the user in the device settings. Changes in settings do not impact the behavior of the sensor: only whether the framework briefly turns the screen on when it triggers. The actual gesture to be detected isn't specified, and can be chosen by the manufacturer of the device.

This sensor must be low power, as it's likely to be activated 24/7. Each sensor event reports 1 in sensors_event_t.data[0] .