package com.example.android.recipe075; import java.util.List; import android.app.Activity; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.os.Bundle; import android.widget.TextView; public class Recipe075 extends Activity implements SensorEventListener { private TextView mTextView; private SensorManager mSensorManager; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mTextView = (TextView)findViewById(R.id.text); mSensorManager = (SensorManager)getSystemService( SENSOR_SERVICE); } @Override protected void onResume() { super.onResume(); // 地磁気センサーを取得 List<Sensor> list = mSensorManager.getSensorList(Sensor.TYPE_MAGNETIC_FIELD); // 取得できなければ何もしない if (list.size() < 1) return; // 地磁気センサーを取得 Sensor sensor = list.get(0); // 地磁気センサーにリスナーを登録 // 第3引数で感度を指定できます。 mSensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL); } @Override public void onPause() { super.onPause(); // リスナーを解除 mSensorManager.unregisterListener(this); } public void onAccuracyChanged(Sensor sensor, int accuracy) { } // センサーの値が変化したら呼び出される public void onSensorChanged(SensorEvent event) { // 地磁気センサー以外は何もしない。 if (event.sensor.getType() != Sensor.TYPE_MAGNETIC_FIELD) { return; } // 値を取得 float x = event.values[0]; float y = event.values[1]; float z = event.values[2]; // TextViewに表示! mTextView.setText("ただいまの地磁気\n" + "X方向に" + x + "uT\n" + "Y方向に" + y + "uT\n" + "Z方向に" + z + "uT\n" + "です!"); } }