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