Generic Sensor APIは、JavaScirptからセンサ類への、統一的な方法でのアクセスを可能にするAPIです。

今までもいくつかのセンサにアクセスするAPIは提供されてきましたが、APIが提供されるのに時間がかかり、値を読み取る方法もバラバラでした。Generic Sensor APIはそれらの問題を解決します。

各ブラウザの実装状況

Generic Sensor APIの実装状況は以下の通りです:

  • Chrome 62: Ambient Light Sensor(環境光センサ)のみ
  • Firefox 56: 未実装
  • Safari 11: 未実装
  • Edge 16: 未実装

Generic Sensor APIの基本的な使い方

Generic Sensor APIはセキュアなコンテキスト(https)でのみ利用可能です。

Generic Sensor APIの使い方は簡単です。対応するオブジェクトをnewして、イベントリスナを登録するだけです。ここではAmbient Light Sensor(環境光センサ)を例に説明します。

Generic Sensor APIでは、まず対応するオブジェクトをnewします。そして必要なイベントリスナを登録し、センサをstartします。必要に応じてstopすることもできます。

また、センサにはサンプリング周波数を指定することができます。

ここでは環境光センサを例にしましたが、どのセンサを用いる場合でも、使い方はほぼ同じです。

詳しい仕様は以下のURLで確認できます。

Permissions APIと組み合わせる

各種センサは無条件に読み取ることができるとは限りません。ブラウザやセンサの種類にもよりますが、ユーザーの明示的な許可が必要になるかもしれません。

Permissions APIを利用すれば、センサへのアクセスが許可されているかどうかを調べることができます。

Permissions APIについては、詳しくはMDNのPermissions APIのページか、このブログの「Permissions APIでブラウザからの各種機能へのアクセス権限を確認・要求する」をご覧ください。

Generic Sensor APIで扱える各種センサ

加速度センサ(Accelerometer)

加速度センサはAccelerometerオブジェクトとして扱うことができます。センサはx、y、zの値を持ちます。

Permissions APIでの値は「accelerometer」です。

詳しい仕様は以下のURLで確認できます:

線形加速度センサ(LinearAccelerationSensor)

線形加速度センサ(※加速度センサから重力を取り除いた値)はLinearAccelerationSensorオブジェクトとして扱うことができます。センサはx、y、zの値を持ちます。

Permissions APIでの値は「accelerometer」です。

詳しい仕様は以下のURLで確認できます:

重力センサ(GravitySensor)

重力センサはGravitySensorオブジェクトとして扱うことができます。センサはx、y、zの値を持ちます。

Permissions APIでの値は「accelerometer」です。

詳しい仕様は以下のURLで確認できます:

ジャイロスコープ(Gyroscope)

ジャイロスコープはGyroscopeオブジェクトとして扱うことができます。センサはx、y、zの値を持ちます。

Permissions APIでの値は「gyroscope」です。

詳しい仕様は以下のURLで確認できます:

絶対オリエンテーションセンサ(AbsoluteOrientationSensor)

絶対オリエンテーションセンサはAbsoluteOrientationSensorオブジェクトとして扱うことができます。絶対オリエンテーションセンサは、地球を基準にデバイスの回転を表すセンサです。センサはクォータニオンを表す値quaternionと、クォータニオンから回転行列に変換するメソッドpopulateMatrixを持ちます。

Permissions APIでの値は「accelerometer」「gyroscope」「magnetometer」の全てです。

詳しい仕様は以下のURLで確認できます:

相対オリエンテーションセンサ(RelativeOrientationSensor)

相対オリエンテーションセンサはRelativeOrientationSensorオブジェクトとして扱うことができます。相対オリエンテーションセンサはデバイスの静止状態を基準に回転を表すセンサです。値quaternionとメソッドpopulateMatrixを持ちます。

Permissions APIでの値は「accelerometer」と「gyroscope」です。

詳しい仕様は以下のURLで確認できます:

磁気センサ(Magnetometer)

磁気センサはMagnetometerオブジェクトとして扱うことができます。センサはx、y、zの値を持ちます。

Permissions APIでの値は「magnetometer」です。

詳しい仕様は以下のURLで確認できます:

未キャリブレート磁気センサ(UncalibratedMagnetometer)

未キャリブレート磁気センサはUncalibratedMagnetometerオブジェクトとして扱うことができます。センサはx、y、zの値に加え、xBias、yBias、zBiasの値を持ちます。

Permissions APIでの値は「magnetometer」です。

詳しい仕様は以下のURLで確認できます:

環境光センサ(AmbientLightSensor)

環境光センサはAmbientLightSensorオブジェクトとして扱うことができます。センサはilluminance(単位:ルクス)の値を持ちます。

Permissions APIでの値は「ambient-light-sensor」です。

詳しい仕様は以下のURLで確認できます: