스마트 폰을 갑작스럽게 흔드는 가속도 값을 센싱하여 스마트 폰 화면 색상을 바꾸는 앱 코드를 작성해 보자.
activity_main.xml에서 스마트폰 화면 레이아웃을 살펴보자. 화면 상단에 30sp 폰트 크기로 Shake to switch color를 텍스트 출력한다.
MainActivity 라이브러리를 살펴보자. hardware.Sensor는 4종류의 환경센서를 포함 총 9종의 센서를 지원한다. 센서로부터 데이터를 센싱하기 위해서 센서 별로 타이밍과 정밀도가 다르지만 SensorManager가 특정한 센서를 지정하게 되면 SensorEvent 가 발생함에 따라 SensorEventListner가 가동되면서 Accuracy 변동을 체크함과 아울러 onSensorChanged 에 의해 변동된 센서 값을 읽어 들인다.
다음의 코드는 가속도 센서를 대상으로 클라스 SensorManager가 인스턴스를 생성하는 과정dl다. 첫 시작 스마트 폰 컬러는 시안 색상이며 SENSOR_SERVICE를 실행한 후 TYPE_ACCELEROMETER 센서가 지정되었으면 이벤트 발생 확인 후 getAccelerometer(event)에 의해 값을 읽어 오는 과정이다.
이벤트 마다 값(values)을 측정한 다음 중력 가속도 즉 9.80 m/sec2을 사용하여 normalize 한다. Math.sqrt 함수를 사용하는데 이는 반드시 더블로 선언되어야 한다. 실제로 흔들기 전의 제곱근 가속도 값을 출력을 보면 0.98`0.99 수준이며 흔들 경우 1.4 G를 상회하니까 색상이 변하겠지만 make.toast에 의한 출력 값을 보면 1.0을 조금 상회하는데 이는 순간적인 값을 캐치하여 출력하지 못하는 듯하다.
첨부 파일을 다운받아 압축을 해제하여 AndroidStudioProjects 에 설치하여 실행해 보자.
'안드로이드 스튜디오' 카테고리의 다른 글
안드로이드 스튜디오 CameraEX 코드 구조 (0) | 2021.12.19 |
---|---|
2021년 12월 코딩 아트 베스트 블로그 (0) | 2021.07.12 |
3.9 안드로이드 스튜디오 Sound Recording Stop Play 예제 (0) | 2020.04.15 |
3.8 안드로이드 스튜디오 Fragment 코드 예제 (0) | 2020.04.14 |
7.2 안드로이드GraphView 라이브러리를 사용해 바그래프를 출력해 보자 (0) | 2020.04.12 |