안드로이드 가속센서와 자이로스코프 센서(Android Accelerometer sensor & Gyroscope sensor)
Language/Android 2014. 6. 20. 11:53
안드로이드 개발 시 각종 센서의 상태값이나 수치를 이용하는 예제입니다.
안드로이드는 조도센서, 온도센서 ,가속센서 등 여러 센서들이 내장되어 있습니다.
이런 센서들을 이용한 예제 소스입니다.
아래 소스는 가속센서(엑셀러로미터 : accelerometer)와 자이로스코프(gyroscope)에 대한 예제입니다.
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);
}
}
'Language > Android' 카테고리의 다른 글
| Google Play 디버그가 가능한 APK를 업로드했습니다. (2) | 2015.08.04 |
|---|---|
| 안드로이드 가속센서와 자이로스코프 센서(Android Accelerometer sensor & Gyroscope sensor) (8) | 2014.06.20 |
| 안드로이드 appcompat_v7 (9) | 2014.05.22 |
| 이클립스 안드로이드 실행 (AVD, 휴대폰에 화면 띄우기) (4) | 2014.04.03 |
| 안드로이드 스튜디오 인코딩 설정(한글 깨짐 문제 해결) (10) | 2013.06.28 |
| Unable to execute dex: Multiple dex files define Lrsearch/connector/CalcBase; (0) | 2013.06.04 |
| 안드로이드 SVN(Subversion) (12) | 2013.05.31 |
| 안드로이드(Android) TextWatcher(comma) (0) | 2013.03.08 |
| 안드로이드(Android),자바(JAVA) 소수점 자르기 (6) | 2013.03.07 |
| 안드로이드(Android) 메뉴 옵션 예제 (0) | 2013.02.26 |
| 안드로이드 체크박스(Android checkbox) 예제 (0) | 2013.02.26 |

댓글을 달아 주세요
비밀댓글입니다
일부만 보고 파악하기가 힘듭니다.
전체 소스 혹은 상세한 설명이 필요할 것 같습니다.
안녕하세요 초보개발자입니다.
다름이 아니라 안드로이드에서 자이로스코프 센서를 이용해 각도 구하는 방법을 알고 계시면 도움을 주셨으면 좋겠습니다.
곧 포스팅하겠습니다.
안녕하세요. 초보개발자인데 블로그가 많이 도움이 되네요.~~ 앞으로 많이 포스팅 해주세요~
감사합니다!!
글 안쓴지 2년정도 됐는데
이런 댓글에 힘입어 다시 써야겠습니다.
우와~! 신기하네요~! 근데 에뮬레이터의 기울기를 바꿔가면서 볼 순 없는건가요?
기기를 기울여서 수치를 변경하시려면 실제 기기로 테스트 하시는게 정확합니다.