7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Android】センサーを使う方法

Posted at

#プログラミング勉強日記
2021年1月20日
一昨日の記事でAndroidのセンサーAPIについてまとめた。今日はAndroidのセンサーの使い方を簡単にまとめる。

#Androidセンサーを使う方法
 Androidセンサーを使う処理を説明する。

##1. SensorManagerを取得
 SensorManagerを取得するためには、getSystemServiceメソッドを使う。引数には、android.contentパッケージのContextクラスの定数SENSOR_SERVICEを指定する。

SensorManagerの取得
// SensorManagerインスタンス
private SensorManager sensorManager;

@Override
public void onCreate(Bundle savedInstanceState) {
  // SensorManagerのインスタンスを取得する
  sensorManager = (SensorManager) this.getSystemService(SENSOR_SERVICE);
}

##2. イベントリスナーの実装
 イベントリスナーは、何かしらのイベントが発生したときに呼ばれるクラスである。センサーイベントには、SensorEventListenerインタフェースをActivityに実装して具体的な処理をする。
 SensorEventListenerインタフェースにはonAccuracycahngedとonSensorCahngedの2つのメソッドが定義されている。

イベントリスナーの実装
public class SensorActivity extends Activity implements SensorEventListener {

 
    @Override
    // センサーの精度が変更されると呼ばれる
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
       
    }
 
    @Override
    // センサーの値が変化すると呼ばれる
    public void onSensorChanged(SensorEvent event) {
        
    }
}

###イベントリスナーの登録と登録解除の方法
 リスナーの登録にはSensorManagerクラスのregisterListenerメソッドを使う。引数には、センサーイベントを取得するリスナー、取得するセンサーの種類、取得する頻度を設定する。

registerListener(SensorEventListener listener, Sensor sensor, int rate)

 イベントリスナーの登録解除には、SensorManagerクラスのunregisterListenerメソッドを使う。

イベントリスナーの登録を解除
protected void onPause() {
    super.onPause();
    if (sensorManager != null) {
        sensorManager.unregisterListener(this);
    }
}

#参考文献
センサーを利用する / GETTING STARTED

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?