지난번에는 Samsung Gear S3에서 지원하는 모든 Sensor들의 값을 받고 메시지 패킷을 만들어 앱에서 출력하도록 하였다.


지난번 포스팅

TIZEN - Samsung Gear S3 HRM sensor 연동

TIZEN - SAMSUNG GEAR S3 SENSORS 연동

TIZEN - SAMSUNG GEAR S3 SENSORS 연동2


이번에 진행할 부분은 각각의 센서들의 이벤트에서 앱으로 각각 전송하고 앱에서는 이를 파싱하여 출력하도록 하겠다. 그리고 앱에서 받고 싶은 센서들을 선택하여 기어에 전송하면 기어에서 해당값만 전송하도록 하였다.


- 사용 샘플


지난번 프로젝트 참고



- 네트워크 환경


Gear - Computer Wifi(같은 네트워크)

Gear - Smartphone : BLE



- 사용툴

Tizen studio 1.2, werable SDK 2.3.1, Android studio 2.3.1, Android SDK 4.2



- 예상 시나리오


앱에서 값을 받기를 원하는 센서들을 체크한다. 체크가 완료되면 이를 gear에 전송한다. gear 는 받은 데이터를 파싱하여 값을 받기 원하는 센서들의 bool 값에 true 를 준다. 기어에서 센서의 값을 읽어오면 timestamp 와 함께 앱에 전송하고 앱은 이를 출력한다.



- 순서


1. 저번 포스팅의 결과 모든 센서들의 값이 들어왔을 때 이를 전송하고 앱에서는 이를 받아 출력하였다. 이번에는 모든 센서들의 값이 들어오는 것을 체크하지말고 각각의 이벤트 리스너에서 앱으로 메시지를 보내도록 하겠다.



모든 센서들의 값을 받아 전송하는 프로그램


2. 설정한 Interval 대로 값이 들어오는지 확인하기 위해 Timestamp도 찍도록 하였다.



 ※TIP : Timestamp 의 자료형은 unsigned long long 이다. 이를 출력하기 위한 서식지정자는 %llu 다. Timestamp 의 단위는 us(마이크로초)이며 백만분의 1초다.


3. 앱에서 받기 원하는 센서들의 값만 전송해야 하기 때문에 이를 체크하기 위해 각 센서별로 bool 변수를 선언하고 sap 쪽의 on_data_recieved (received가 맞으나 샘플에서 오타가 난 듯 하다.) 메소드에서 이를 체크한다. 필자는 앱 -> 기어 의 메시지 패킷을 a,l,g,y,i,p,h 와 같은 방법으로 표시하고 만약 받기를 원하지 않는 센서의 경우는 a,0,g,y,0,0,0 같은 식으로 표시하였다.



4. 각 센서의 리스너에서 다음과 같이 bool 변수를 추가하면 끝 (더 좋은 방법은 센서의 리스너를 끄고 키는 것이다.)



5. 이제 앱에서 작업을 하자. 받을 센서를 설정하는 activity를 하나 만들도록 하자. 필자는 checkbox 를 사용하였으며 어떤 것을 사용하는 것은 자유다.



안드로이드 앱 UI


6. 세팅 버튼 클릭 시 Intent를 새로 만들고 startActivityForResult 를 사용하여 값을 받을 준비를 한다. 액티비티 간의 데이터 공유는 검색하면 자세히 나오므로 생략한다.



7. 엑티비티 종료 시 넘어 온 값을 처리하기 위한 onActivityResult 를 오버라이드 하고 코드를 원하는 대로 수정한다.



8. Setting Activity에서 체크 여부에 따라 메시지 패킷을 생성한다. 체크박스에서 체크여부를 확인하는 것은 isChecked 메소드다.



9. 매번 들어갈때마다 체크하는 것은 귀찮은 일이므로 이전의 상태값을 저장하도록 하자. SharedPreferences 를 사용하면 된다. 세팅창으로 들어갈 때 값을 불러오고 나갈 때 값을 저장하면 되므로 각각 onCreate 와 finish 에 이 부분을 넣었다. (finish는 오버라이드 하여야한다.)



onCreate - 저장된 값으로 설정



finish - 값 저장


10. 하지만 위와 같이 코드를 짜게되면 취소의 경우에도 이를 저장하는 문제가 발생한다. 따라서 bool 변수를 하나 두어 취소일 때는 위의 작업이 실행되지 않도록 하자.



11. Setting 에서 메인 액티비티로 값을 넘겨주자.



12. onReceive 메소드에서 메시지 패킷에 맞게 값을 출력할 준비를 하자.


13. 테스트


 - 안드로이드 앱 테스트 결과 화면




Setting 한 센서들의 값만 출력되는 것을 알 수 있다.






블로그 이미지

Refrin

일상생활 끄적 IT 프로젝트 끄적

댓글을 달아 주세요