android 예제 중에 Snake 게임이 있습니다.
방향 키로 snake를 욺직일 수 있는데 이번에는 Accelerometer 센서로 snake를 조종할 수 있도록 수정 해 보겠습니다.
protected void initAccelator() {
SensorManager sensorManager = (SensorManager)getContext().getSystemService(Context.SENSOR_SERVICE);
Sensor mSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
SensorEventListener sel = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
float[] values = event.values;
if (java.lang.Math.abs(values[0]) - java.lang.Math.abs(values[1]) > 0) {
if (values[0] <>
if (mDirection != WEST) {
mNextDirection = EAST;
}
} else if (values[0] >= 0) {
if (mDirection != EAST) {
mNextDirection = WEST;
}
}
} else {
if (values[1] <>
if (mDirection != SOUTH) {
mNextDirection = NORTH;
}
} else if (values[1] >= 0) {
if (mDirection != NORTH) {
mNextDirection = SOUTH;
}
}
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
};
sensorManager.registerListener(sel, mSensor, SensorManager.SENSOR_DELAY_GAME);
}
위에 함수를 SnakeView에 추가 후 생성자에서 호출합니다.
event.values에서 values[0]이 x축 이고 [1]이 y축 [2]가 z축입니다.
x축과 y 축이 동시에 계속 발생 하기 때문에 좌,우,위,아래 중 하나를 선택하기 위해 x축과 y축 중에 값이 더 큰 쭉으로 선택하도록 하고 축의 방향은 음수인지 양수인지 판단 하시면 됩니다.