반응형
안드로이드 개발 시 각종 센서의 상태값이나 수치를 이용하는 예제입니다.
안드로이드는 조도센서, 온도센서 ,가속센서 등 여러 센서들이 내장되어 있습니다.
이런 센서들을 이용한 예제 소스입니다.
아래 소스는 가속센서(엑셀러로미터 : 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를 업로드했습니다. (5) | 2015.08.04 |
---|---|
안드로이드 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 |