korechi’s diary

とあるVR/ARエンジニアのブログ

SmartEyeGlassでセンサーを使う方法

センサーの値を取得するには
1. SensorManager のオブジェクトを取得する
2. SensorManager オブジェクトにセンサーのリスナーを登録する
3. センサーの値を取得する
を行う必要がある。具体的には

sensorManagerを取得し、そこからセンサーを取得

private AccessorySensorManager sensorManager;
private AccessorySensor sensor = null;

sensorManager = new AccessorySensorManager(context, hostAppPackageName);
// 方位センサー
sensor = sensorManager.getSensor(SensorTypeValue.MAGNETIC_FIELD);
// 加速度センサー
sensor = sensorManager.getSensor(SensorTypeValue.ACCELEROMETER);
// 輝度センサー
sensor = sensorManager.getSensor(SensorTypeValue.LIGHT);

オブジェクト(センサー)にリスナーを登録し、値を使う

try {
  sensor.registerListener(new AccessorySensorEventListener() {
    @Override
    public void onSensorEvent(final AccessorySensorEvent ev) {
      // 値を使う例
     float[] v = ev.getSensorValues();
    }
  }, Sensor.SensorRates.SENSOR_DELAY_NORMAL, 0);
} catch (AccessorySensorException e) {
  Log.d(Constants.LOG_TAG, "Failed to register listener");
}

これらをControlExtensionを継承したクラスのonResume()内などでやればよい

終了する時はonPause()などの中に

sensor.unregisterListener();
sensor = null;

を記述してリスナーを外すのを忘れないように