XE8で作成したAndroidアプリで一部のセンサーが正常に動作しない

提供: Support
移動先: 案内検索

対象となるセンサー

  • Light Sensor(光センサー)
  • Proximity Sensor(近接センサー)
  • Pressure Sensor(圧力センサー)

問題

XE8で作成したAndroidアプリでLight Sensor(光センサー)、Proximity Sensor(近接センサー)、Pressure Sensor(圧力センサー)の3つのセンサーが正常に動作しない症状が報告されています。

以下の図は、XE8に付属するサンプルプログラム(SenserInfo)をAndroidで実行し、ProximitySensorのHumanProximityの値を取得していますが、正常に動作していません。

Thumb03000052ujpn.png

解決

該当する3つのセンサーは、コンストラクタ内で、センサーを開始するメソッドが実行されていませんでした。そのためSystem.Android.Sensorsユニットの以下の該当箇所を修正し、修正したSystem.Android.Sensors.pasを自身のプロジェクトへ組み込んでください。

修正は、以下の三カ所です。


  • Light Sensor (光センサー)
constructor TAndroidNativeLightSensor.Create(AManager: TSensorManager);
begin
  inherited;
  FNativeSensor := TNativeSensor.Create(ASENSOR_TYPE_LIGHT);
  FNativeSensor.DoStart; //追加
end;
  • Pressure Sensor(圧力センサー)
constructor TAndroidNativePressureSensor.Create(AManager: TSensorManager);
begin
  inherited;
  FNativeSensor := TNativeSensor.Create(ASENSOR_TYPE_PRESSURE);
  FNativeSensor.DoStart; //追加
end;
  • Proximity Sensor(近接センサー)
constructor TAndroidNativeProximitySensor.Create(AManager: TSensorManager);
begin
  inherited;
  FNativeSensor := TNativeSensor.Create(ASENSOR_TYPE_PROXIMITY);
  FNativeSensor.DoStart; //追加
end;


修正後の動作をサンプルプログラム(SenserInfo)で確認すると、以下の図にようにProximitySensorが正常に稼働し、HumanProximityの値が取得できます。

Thumb03000053ujpn.png