티스토리 뷰
안드로이드 센서를 이용하는 방법에 대해서 알아봅시다.
물론... 저는 iOS개발자이지만. 안드로이드도 놓을수 없기에 ㅎㅎ
조만간 서버 개발자로 넘어가고 싶네요... 한가지 언어에 만족을 못하는 스타일이라.
일단 센서를 이용하여서 개발을 하는 방법을 보여드립니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | public class TestActivity extends Activity implements SensorEventListener { private SensorManager mSensorManager; private Sensor mGyroscope; private Sensor accSensor; private int accelXValue; private int accelYValue; private int accelZValue; private int gyroX; private int gyroY; private int gyroZ; @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 (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); } } //리스너 등록 protected void onResume() { super.onResume(); // 주기 설명 // SENSOR_DELAY_UI 갱신에 필요한 정도 주기 // SENSOR_DELAY_NORMAL 화면 방향 전환 등의 일상적인 주기 // SENSOR_DELAY_GAME 게임에 적합한 주기 // SENSOR_DELAY_FASTEST 최대한의 빠른 주기 mSensorManager.registerListener(this, mGyroscope, SensorManager.SENSOR_DELAY_FASTEST); mSensorManager.registerListener(this, accSensor, SensorManager.SENSOR_DELAY_FASTEST); } //리스너 해제 protected void onPause() { super.onPause(); mSensorManager.unregisterListener(this); } } | cs |
대략 SensorManager Service에서 값을 가져와서 Sensor의 값으로 센서를 사용할 수 있도록 하여줍니다.
Sensor.TYPE_GYROSCOPE
대략 이런 값을 가지고 사용을 하게 되죠...
그 이후에 센서의 정확도(주기)를 설정하여 주고, LIstener를 통하여 값을 가져오게 됩니다.
SensorManager.SENSOR_DELAY_FASTEST
대략 이럼... ㅎㅎㅎ
지금 약간 졸린 상태라 계속 대략이라는 표현을 사용하는데요.
그냥 이정도만 설명해도 다들 알것 같아서 입니다.
그럼 수고하세요.
'Mobile > Android' 카테고리의 다른 글
adb를 이용하여 화면 캡쳐하기 (0) | 2018.01.12 |
---|---|
안드로이드 View의 Method 호출 순서 (0) | 2018.01.09 |
adb shell 유용한 명령어 (0) | 2018.01.08 |
[Android] Android Studio gradle 변수 사용 (0) | 2017.12.22 |
[Android/kotlin] Generics (0) | 2017.10.24 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- war
- cocoapods
- Python
- ubuntu
- CentOS
- nodejs
- git
- Codable
- Linux
- Xcode
- rxswift
- php
- github
- Kotlin
- windows10
- Gradle
- golang
- Java
- intellij
- centos8
- MySQL
- ios
- docker
- Spring
- go
- SWIFT
- Windows
- android
- enum
- tomcat
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함