Programing
AccelerorMeter Sensor 사용 소스
W.A
2010. 7. 15. 16:36
1. Activity 생성(onCreate)시 SensorService를 얻어온다.
SensorMamager sensorManager =
(SensorManager) getSystemService(SENSOR_SERVICE);
Sensor accelerormeterSensor
= sensorManager
.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
2. Sensor가 잘 생성되었다면은 SensorManager에 등록을 한다.
if
(accelerormeterSensor !=
null
)
sensorManager.registerListener(
this
, accelerormeterSensor ,
SensorManager.SENSOR_DELAY_GAME);
3. 등록까지 완료 되었다면은 이제 가속도센서(AccelerorMeterSensor)를 사용할 수 있다.
public
void
onSensorChanged(SensorEvent
event) {
if
(event.sensor.getType() ==
Sensor.TYPE_ACCELEROMETER) {
// 원하는 기능을 사용 가능함.
}
소스 코드
package com.karyu.testkaryu;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TextView;
public class TestKaRyuActivity extends Activity implements SensorEventListener {
/** Called when the activity is first created. */
private SensorManager sensorManager;
private TextView aTextx = null;
private TextView aTexty = null;
private TextView aTextz = null;
private TextView result = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
aTextx = (TextView)findViewById(R.id.TextView01);
aTexty = (TextView)findViewById(R.id.TextView02);
aTextz = (TextView)findViewById(R.id.TextView03);
result = (TextView)findViewById(R.id.TextView04);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
List<Sensor> sensors = sensorManager
.getSensorList(Sensor.TYPE_ACCELEROMETER);
result.setText("No");
if (sensors.size() > 0) {
result.setText("Yes");
sensorManager.registerListener(this, sensors.get(0),
SensorManager.SENSOR_DELAY_GAME);
} else {
result.setText("Failed");
}
}
@Override
protected void onDestroy() {
super.onDestroy();
sensorManager.unregisterListener(this);
}
@Override
public void onAccuracyChanged(final Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
@Override
public void onSensorChanged(final SensorEvent event) {
Sensor sensor = event.sensor;
switch (sensor.getType()) {
case Sensor.TYPE_ACCELEROMETER:
//Log.d(LOG_TAG, "ACCELEROMETER : " + event.values[0] + ","
//+ event.values[1] + "," + event.values[2]);
aTextx.setText("X =" + event.values[0]);
aTexty.setText("Y =" + event.values[1]);
aTextz.setText("Z =" + event.values[2]);
break;
default:
break;
}
}
}