Android気圧センサーの値取得

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);
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です