아이센스 혈당계 SDK의 사용을 단순하게 하기 위한 라이브러리
- isenssdk 폴더 안에 jar포멧의 라이브러리 파일로 추가되어있다.
- 향후 기기의 펌웨어 업데이트 등의 이슈로 sdk 업데이트가 필요한 경우 아이센스 제조사에서 sdk를 새로 받아서 교체해줘야 한다.
해당 라이브러리는 jitpack으로 배포되었으며, 아래의 과정을 통해 새 버전을 배포할 수 있다.
- 깃허브 저장소에서 새로운 태그를 지정한다.
- Jitpack 홈페이지의
Git repo url
검색창에huraypositive/isens-android-sdk
를 넣어 repo를 찾은 후, 새로 추가한 태그의 버전을 빌드한다. - 안드로이드 프로젝트에서 새로 빌드된 버전으로 업데이트하여 정상 배포되었는지를 테스트한다.
- CareSens N Premier
// in your settings.gradle
dependencyResolutionManagement {
repositories {
...
mavenCentral()
maven { url "https://jitpack.io" }
}
}
// in your app-level build.gradle
dependencies {
implementation 'com.github.huraypositive:isens-android-sdk:$version'
}
- sample 모듈 참고
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
private val isensManager = IsensManager.getIsensManager(applicationContext, isensCallback)
class DemoViewModel : ViewModel(), IsensCallback {
private val isensManager = IsensManager.getIsensManager(applicationContext, isensCallback)
override fun onScanned(devices: List<DiscoveredIsensDevice>) {
// 스캔된 기기 목록이 들어오는 콜백
}
override fun onConnectionSuccess() {
// 기기 등록이 성공했을 때 호출되는 콜백
// 단순히 기기 등록만 필요한 경우 여기에서 혈당계의 주소(UUID)를 저장하면 되고,
// 등록과 동시에 혈당 기록을 불러오려면 여기서 isensManager.requestAllRecords() 함수를 호출한다.
}
override fun onReceiveData(records: List<IsensGlucoseRecord>) {
// 요청된 혈당 기록값이 들어오는 콜백
}
override fun onError(error: IsensError) {
// 에러 발생 콜백
}
override fun onDataEmpty() {
// 기록 전송 요청이 성공했으나 가져올 기록이 없는 경우 호출되는 콜백
}
}
fun startScan(deviceType: IsensDeviceType)
fun connectDevice(address: String)
예를 들어 아래 함수로 넘겨주는 sequenceNumber
가 10이라면 데이터 요청 시 기록값의 sequenceNubmer
가 10보다 크거나 작은 기록들만 전송한다. 기록이 없을 경우 onDataEmpty() 콜백이 호출된다.
fun requestRecordsAfter(sequenceNumber: Int)
sequenceNumber
와 상관없이 혈당계에 저장된 모든 기록을 전송받을 때 사용한다.
fun requestAllRecords()
fun requestTimeSync()
fun stopScan()
더이상 SDK를 사용하지 않거나 혹은 즉시 연결을 끊어야 할 때 호출한다.
fun disconnect()
data class IsensGlucoseRecord(
val sequenceNumber: Int, // 측정된 순서대로 부여되는 sequenceNumberr
val time: Long, // 혈당이 측정된 시각(millisecond)
val glucoseData: Double, // 혈당 측정값
val period: IsensRecordPeriod // 혈당 측정 시기
)
enum class IsensRecordPeriod(text: String) {
UNKNOWN("미입력"), // 혈당계에서 측정시기를 입력하지 않음
BEFORE_MEAL("식전"),
AFTER_MEAL("식후"),
FASTING("공복");
}