지난번에는 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 프로젝트 끄적

댓글을 달아 주세요

지난번에는 Samsung Gear S3에서 지원하는 모든 Sensor들의 값을 받고 출력했다.


지난번 포스팅 : http://refrin.tistory.com/4

                http://refrin.tistory.com/5


이번에 진행할 부분은 지난번 포스팅에서 얻은 값을 패킹하여 앱으로 보내고 앱에서 이를 파싱하여 출력하는 프로그램을 만들 것이다.


앱에 관한 것은 지난번 포스팅 참고


- 사용 샘플


지난번 샘플 참고



- 네트워크 환경


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

Gear - Smartphone : BLE



- 사용툴

Tizen studio 1.2, werable SDK 2.3.1 (3.0도 가능), Android studio 2.3.1, Android SDK 4.2



- 순서


1. 위의 프로젝트의 네트워크 환경을 구축하고 저번 포스팅까지 진행한다.


2. 메시지 패킷을 설계한다.


 - 먼저 메시지 패킷으로 사용할 센서들의 길이를 알아보자.



 - 센서들의 값은 모두 실수형(float)이므로 소수점 한자리까지 포함하여 계산하였다.(소수점 포함, String 값으로 패킷을 넘길 것이기 때문에)


 - 필자는 센서들의 값 사이 그리고 센서 사이를 "," 를 사용하여 구분하였다. 따라서 38 + 6 = 44


 - Sensor의 값이 들어오는 순서는 Gear 2개를 통해 실험해도 위의 Order 순서와 같았다. (이유를 알 수 없다 혹시 다른 결과가 나온다면 그 결과에 맞게 코드를 수정)


3. 메시지 패킷을 생성한다.


 - 코드를 보면 알겠지만 이벤트 리스너이기 때문에 이벤트가 생성될 때마다 코드에 진입하는 방식이다. 따라서 필자는 각 센서들에 bool 변수를 주고 모든 센서들의 값이 들어왔을 때 전송하는 방법을 사용하였다. 중간에 이미 받은 센서의 값이나 오류가 들어오면 초기화하도록 하였다.


 - 코드 수정 후 프로젝트 빌드 및 앱 설치


4. 이제 안드로이드 앱을 작성하자.


 - 값이 들어오는 부분은 onReceive 부분이다. 해당 부분에서 값을 받도록 하자. 모든 값들이 ","로 구분되기 때문에 split 을 통해 sensor 값을 구분한다. 구분된 센서들의 인덱스는 다음과 같다.



 - 해당 값들을 다 사용해도 좋고 원하는 것만 사용해도 좋다. 각자 원하는 방식으로 코딩하자.


 - UI나 기능을 수정한다. 필자는 SEND 기능이 필요 없기 때문에 해당 코드와 UI를 삭제하였다.


5. 테스트


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




 ※TIP : 혹시나 새로운 프로젝트를 만들어서 작업하는사람들은 샘플의Samsung 관련 lib 들을 가져가야 빌드가 된다. 



< - Error - >


딱히 Error 랄 것은 없지만 안드로이드에서 새롭게 프로젝트를 만들 경우 샘플의 여러가지 파일이 필요하게 된다. 패키지 경로와 파일들을 적절하게 옮겨주는 것이 중요하다.


블로그 이미지

Refrin

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

댓글을 달아 주세요

Tizen에서 Data type Convert 가 다른 언어와 비슷하지만 api가 다르다.


itoa, xtoa, dtoa, atod 등의 tizen 버전을 소개한다. (EINA 설치 및 include 필수)





 - 아래 출처는 Tizen 홈페이지의 자세한 설명과 예제다.


출처 : https://developer.tizen.org/ko/development/api-references/native-application?redirect=/dev-guide/2.4/org.tizen.native.mobile.apireference/group__Eina__Convert__Group.html&langredirect=1



블로그 이미지

Refrin

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

Tag Convert, Tizen

댓글을 달아 주세요