안드로이드 센서 + 자이로스코프
2014. 6. 16. 20:43ㆍMobile/Android
반응형
안드로이드 센서 + 자이로스코프
각종 센서들을 이용해서 응용하는 프로그램을 만들어 봅시다.
안드로이드 기기에서 가속센서, 온도센서 ,조도센서 등 여라가지 센서들이 있습니다. 이런한 센서들을 이용하여 게임등 공통된 부분을 살펴보자. 가속 이랑 자이로스코프에대해 살펴보자
package com.example.dominosdiy;
import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
public class MainActivity4 extends Activity implements SensorEventListener {
int accelXValue;
int accelYValue;
int accelZValue;
int gyroX;
int gyroY;
int gyroZ;
private SensorManager mSensorManager;
private Sensor mGyroscope;
private Sensor accSensor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
//센서 매니저 얻기
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
//자이로스코프 센서(회전)
mGyroscope = mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
//엑셀로미터 센서(가속)
accSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
}
//정확도에 대한 메소드 호출 (사용안함)
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
//센서값들 얻어오기
public void onSensorChanged(SensorEvent event) {
Sensor sensor = event.sensor;
if (sensor.getType() == Sensor.TYPE_GYROSCOPE) {
gyroX = Math.round(event.values[0] * 1000);
gyroY = Math.round(event.values[1] * 1000);
gyroZ = Math.round(event.values[2] * 1000);
System.out.println("gyroX ="+gyroX);
System.out.println("gyroY ="+gyroY);
System.out.println("gyroZ ="+gyroZ);
}
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
accelXValue = (int) event.values[0];
accelYValue = (int) event.values[1];
accelZValue = (int) event.values[2];
System.out.println("accelXValue="+accelXValue);
System.out.println("accelYValue="+accelYValue);
System.out.println("accelZValue="+accelZValue);
}
// 주기 설명
// SENSOR_DELAY_UI 갱신에 필요한 정도 주기
// SENSOR_DELAY_NORMAL 화면 방향 전환 등의 일상적인 주기
// SENSOR_DELAY_GAME 게임에 적합한 주기
// SENSOR_DELAY_FASTEST 최대한의 빠른 주기
//리스너 등록
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, mGyroscope,SensorManager.SENSOR_DELAY_FASTEST);
mSensorManager.registerListener(this, accSensor,SensorManager.SENSOR_DELAY_FASTEST);
}
//리스너 해제
protected void onPause() {
super.onPause();
mSensorManager.unregisterListener(this);
}
}
끝~
반응형
'Mobile > Android' 카테고리의 다른 글
| 안드로이드 이메일 보내기 (4) | 2014.06.25 |
|---|---|
| 안드로이드 gcm registraion ID change 시점 설명 (0) | 2014.06.19 |
| cocos2d-x 안드로이드 실행 (0) | 2014.06.06 |
| 안드로이드 cocos2d-x 프로젝트 생성 (1) | 2014.06.03 |
| 안드로이드 서비스 (0) | 2014.06.02 |