• 개발가이드
  • Android

Android

오픈Api 연동 프로세스

  • step 1.
    검색
  • step 2.
    연결
  • step 3.
    페어링
  • step 4.
    정보수집
  • step 5.
    데이터저장
  • step 6.
    서비스제공

참고사항

- 파일 추가

아래 그림의 1번 상자와 같이 데모앱의 bleService 폴더 하위에 Connect, Const, SyncData 등 3개의 파일을 생성한다.
파일명 중복을 막기 위해 “장치명칭Connect”, “장치명칭Const”, “장치명칭SyncData”처럼 각 파일 앞에 참여업체에서 사용할 장치명칭을 붙여서 파일을 생성합니다.

오픈Api 참여업체 장치정보 추가

- Device Scan

데모앱 DeviceSearchActivity class onCreate 함수를 확인하면 위 그림의 2번 상자와 같이 bleManager.addSearchDevice() 함수를 이용하여 참여업체에서 연동할 장치의 정보를 추가 할 수 있다.
addSearchDevice() 함수는 DeviceInfo 객체를 매개변수로 받으며, DeviceInfo 객체의 생성자 함수에 검색 시 사용할 장치명칭과 장치종류를 추가한다.

  • 장치명칭은 고정으로 사용되는 부분만 입력한다. 예를 들어 블루투스 검색 시 확인되는 장치명칭이 “band-3300”일 때 “bnad” 부분은 고정이고 “3300” 부분이 장치마다 다를 경우 “band” 부분만 입력한다.
  • 장치종류는 DeviceType class를 참고한다.

- Device Pairing

데모앱 DeviceSearchActivity class onCreate 함수를 확인하면 위 그림의 3번 상자와 같이 검색된 장치를 선택 했을 때 선택한 장치종류 및 장치명칭으로 참여업체에서 구현한 “장치명칭Connect” 클래스를 호출한다.

  • 추가하려는 장치종류에 맞는 위치를 확인하고 해당 위치에 bleManager.pairDevice() 함수를 추가한다.
  • bleManager.pairDevice() 함수는 Connect 클래스를 매개변수로 받으며, 참여업체에서 구현한 Connect 클래스의 생성자 함수에 DeviceInfo, JPairCallback, Context 등 정보를 전달한다.
  • 제목 없는 리스트가 출력됩니다JPairCallback 객체는 위 그림의 4번 상자와 같이 JPairCallback 인터페이스를 구현하여 참여업체에서 작성한 Connect 클래스에서 장치정보설정과 장치정보수신을 완료 후 JPairCallback의 onPairSuccess 함수를 호출, 수집된 정보가 확인되면 페어링이 정상으로 처리된 것이다.

- Device Data Sync

데모앱 DeviceSyncDataActivity class onClick 함수를 확인하면 위 그림의 5번 상자와 같이 paired된 장치를 선택 했을 때 선택한 장치종류 및 장치명칭으로 참여업체에서 구현한 “장치명칭SyncData” 클래스를 호출한다.

  • 장치종류에 맞는 위치를 확인하고 해당 위치에 bleManager.deviceSyncData() 함수를 추가한다.
  • bleManager.deviceSyncData() 함수는 SyncData 클래스를 매개변수로 받으며, 참여업체에서 구현한 SyncData 클래스의 생성자 함수에 DeviceInfo, JSyncDataCallback, Context 등 정보를 전달한다.
  • JSyncDataCallback 객체는 위 그림의 6번 상자와 같이 JSyncDataCallback 인터페이스를 구현하여 참여업체에서 작성한 SyncData 클래스에서 장치에 저장되어 있는 측정 정보를 수신하고 수신된 데이터에 맞는 객체에 담아 JSyncDataCallback의 onRcvData 함수를 통해 호출 페이지에 정보를 전달한다. 전달된 정보가 확인되면 데이터 수신이 정상으로 처리된 것이다.

참여업체 개발

- Const Class

Connect 및 SyncData Class에서 사용할 공통 변수 또는 공통 함수를 정의한다.

- Connect Class

JDeviceConnect Class를 상속받아 위 그림의 1번 상자와 같은 생성자와 필수 구현 함수(setDeviceUserInfo(), onConnected(), onDisConnected(), onServicesDiscovered(), onError())를 Override 한다. BluetoothGattCallback 함수들도 정의되어 있으며 필요에 따라서 Override 후 사용 가능하다.

  • bleManager.pairDevice() 함수를 사용하여 페어링을 진행하면 bleManager가 가지고 있는 사용자 정보를 setDeviceUserInfo에 전달하며, 사용자 정보 필요 시 해당 함수에서 전역 변수를 이용하여 사용하길 권장한다.
  • 사용자가 선택한 장비와 접속이 되면 onConnected() 함수를 호출하며, 참여업체는 이 부분부터 페어링 로직을 구현한다.
  • 위 그림의 2번 상자를 보면 discoverService() 함수가 있는데 해당 함수는 JDeviceConnect Class에 구현되어 있으며 처리가 끝나면 3번 상자에 보이는 onServicesDiscovered() 함수를 호출한다.
  • 장치정보설정 및 장치정보수신이 완료되면 4번 상자에 보이는 onPairSuccess() 함수에 수신된 장치정보를 전달한다.
  • 첨부된 그림은 데모앱에서만 사용하는 샘플 코드이다. 참여업체에 맞게 구현하면 됩니다.

- SyncData Class

JDeviceSyncData Class를 상속받아 위 그림의 5번 상자와 같은 생성자와 필수 구현 함수(setDeviceUserInfo(), onConnected(), onDisConnected(), onServicesDiscovered(), onError())를 Override 한다. BluetoothGattCallback 함수들도 정의되어 있으며 필요에 따라서 Override 후 사용 가능하다.

  • bleManager.deviceSyncData() 함수를 사용하여 데이터 수신을 진행하면 bleManager가 가지고 있는 사용자 정보를 setDeviceUserInfo에 전달하며, 사용자 정보 필요 시 해당 함수에서 전역 변수를 이용하여 사용하길 권장한다.
  • 사용자가 선택한 장비와 접속이 되면 onConnected() 함수를 호출하며, 참여업체는 이 부분부터 데이터 수신 로직을 구현한다.
  • 위 그림의 6번 상자를 보면 discoverService() 함수가 있는데 해당 함수는 JDeviceConnect Class에 구현되어 있으며 처리가 끝나면 7번 상자에 보이는 onServicesDiscovered() 함수를 호출한다.
  • BluetoothGattCallback 기능을 이용하여 장치에 저장되어 있는 측정 정보를 수신 받고, 아래 그림 8번 상자와 같이 수신 받은 정보에 맞는 객체를 선택하여 객체 속성에 맞는 정보를 빠짐없이 설정한다. 설정한 객체를 아래 그림의 9번 상자와 같이 onRcvData() 함수에 전달 한다.
  • 첨부된 그림은 데모앱에서만 사용하는 샘플 코드이다. 참여업체에 맞게 구현하면 됩니다.