2013. 4. 16. 14:26

안드로이드의 센서(Sensor) 종류 및 이벤트 처리와 진동 발생

안드로이드의 센서에는 다음과 같은 종류가 있습니다.

먼저 가지고 있는 단말에 어떤 센서가 장착되어 있는지 확인부터 함 해 볼까요. 일단 센서 중에 `가속도 센서`를 하나 예로 들어보죠. 그리고, 이 가속도 센서의 변화를 감지할 리스너와 함께 진동발생 처리까지 같이 처리해줍니다.

onCreate()에서 힙 메모리에 센서와 진동 자원을 확보하고, 가속도 센서의 리스너를 등록합니다. 길이가 길어지니까 각 센서를 탐지하는 기능은 sensorDetect() 메써드로 분리했습니다.

sensorDetect() 메써드에서는 해당 센서가 장착되어 있는지 확인해서 결과를 알려줍니다. 나머지 센서들도 방법은 동일하니까 상수명만 달리하여 추가해주면 됩니다.

가속도 센서에 변화가 감지되면 처리하는 부분. 여기서는 진동을 짧게 울려주고 감지되었다는 문구를 출력합니다. 센서는 시스템 자원을 많이 소모하는데다 여기서는 가장 간단한 기본적인 형태만 살펴보는 관계로 한 번 이벤트 감지 후 바로 리스너를 해제합니다.

한 가지 덧붙이자면 이걸 실행하면 작동이 잘 되지만 처음 시작과 동시에 무조건 한 번은 진동이 울리고 센서 감지 알림문구가 출력됩니다. 이걸 해결하려면 감지하는 가속도의 값을 어느 정도로 할 것인가 그 영역을 지정해주는 코드를 추가해줘야 합니다.

한 가지 유의할 점으로 진동기능을 사용하려면 메니페스트 xml 파일에서 퍼미션(Permission)을 지정해주어야 됩니다.

먼저 에뮬레이터에서 실행해본 결과 여기에는 아무런 센서가 탑재되어 있지 않습니다.

가지고 있는 단말기는 어떨까 해서 실행을 해보니 있는 것도 있고, 없는 것도 있네요.

이 상태에서 폰을 들고 팔을 몇바쿠 휘휘~ 휘둘러주니까 진동이 울리면서 가속도 센서에 변화가 감지되었다고 출력이 나옵니다.