Android気圧センサーの値取得
Androidデバイスに気圧センサーが内蔵されているなら
SensorManagerを使い
気圧値の取得ができる
まずは、SensorManagerのインスタンス取得
Context.getSystemService()
で
SensorManagerのインスタンス取得する
mSensorManager= (SensorManager)getSystemService(SENSOR_SERVICE);
次に、気圧センサーの登録
これは、SensorManagerクラスの
registerListener()
を使い、気圧センサーを登録する
@Override
protected void onResume(){
super.onResume();
//センサー登録
mSensorManager.registerListener(
this,
mSensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE),
SensorManager.SENSOR_DELAY_UI
);
}
これだけだと、バッテリー消費が激しくなるので
解除方法も記述
解除は
SensorManagerクラスの
unregisterListener()をつかうことで
気圧センサーの登録を解除できる
@Override
protected void onPause(){
super.onPause();
//センサー登録解除
mSensorManager.unregisterListener(this);
}
これで、登録と解除はokなので、
次は、センサーから気圧値を取得し表示する
@Override
public void onSensorChanged(SensorEvent event){
//気圧値の取得
float[] values = event.values;
mTvPressure.setText(" "+values[0]);
}
とりあえず、これで取得や表示などはできるけど
気圧センサーは搭載されてない端末が多いため
搭載されてないことを前提に実装すること
方法は2つ
Google Play へ公開するのなら
uses-featureの設定により、Google Playからのインストールができないようにできる
もう一つは、プログラムでチェックする方法
こっちは、サードパーティーアプリとか
自作で入れるときに使う
まずは、uses-featureの場合
この場合、AndroidManifest.xmlへ設定する
<uses-feature android:name="android.hardware.sensor.pressure" android:require="true"/>
を追加する
次に、プログラムでの判定
public static boolean hasFeaturePressure(Context context){
return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_SENSOR_BAROMETER);
}