Android気圧センサーの値取得
Androidデバイスに気圧センサーが内蔵されているなら
SensorManagerを使い
気圧値の取得ができる
まずは、SensorManagerのインスタンス取得
Context.getSystemService()
で
SensorManagerのインスタンス取得する
1 | mSensorManager= (SensorManager)getSystemService(SENSOR_SERVICE); |
次に、気圧センサーの登録
これは、SensorManagerクラスの
registerListener()
を使い、気圧センサーを登録する
1 2 3 4 5 6 7 8 9 10 11 12 13 | @Override protected void onResume(){ super .onResume(); //センサー登録 mSensorManager.registerListener( this , mSensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE), SensorManager.SENSOR_DELAY_UI ); } |
これだけだと、バッテリー消費が激しくなるので
解除方法も記述
解除は
SensorManagerクラスの
unregisterListener()をつかうことで
気圧センサーの登録を解除できる
1 2 3 4 5 6 7 8 | @Override protected void onPause(){ super .onPause(); //センサー登録解除 mSensorManager.unregisterListener( this ); } |
これで、登録と解除はokなので、
次は、センサーから気圧値を取得し表示する
1 2 3 4 5 6 7 | @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へ設定する
1 2 3 | < uses-feature android:name = "android.hardware.sensor.pressure" android:require = "true" /> |
を追加する
次に、プログラムでの判定
1 2 3 4 | public static boolean hasFeaturePressure(Context context){ return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_SENSOR_BAROMETER); } |