Bletia : Android의 BLE 주변을 현대 API로 처리
TL;DR
Bletia 을 이용하면 현대적인 느낌으로 BLE에서 놀 수 있어요!
RxBletia를 이용하면 RxJava인 API로 BLE 취급할 수 있어!
Android BLE 어려움 문제
이것에 대해서는 선인들이 흩어져 말해 주고 있는 것과, 나 자신도 kyobashi.dex나 potatotips, 정보 과학 젊은이의 모임이라고 하는 공부회에서 소개한 적이 있는 것 같은 생각이 들기 때문에 할애한다.
우선 힘들다.
potatotips와 정보 과학 젊은이의 모임에서 소개한 BLE의 고드름 해소 라이브러리 「Bletia」가 v2.0에 올랐으므로 다시 소개한다.
Bletia/RxBletia
Bletia BLE 주변의 API를 JDeferred의
Promise
로 래핑하는 라이브러리입니다. Bletia v1.x는 konashi SDK for Android 백엔드에서도 사용됩니다.무엇을 할 수 있는가
readCharacteristic()
나 writeDescriptor()
등의 Gatt에의 조작을 좋은 느낌에 큐잉 해 준다 PioPinModeAction
나 PioDigitalWriteAction
등의 클래스를 준비해, 내부에서는 Bletia#execute()
에 그러한 Action 의 인스턴스를 먹이는 것으로 konashi 전용 API 를 구현하고 있다 Action
클래스의 구현에 따라서는 characteristic이나 descriptor에 얽매이게 하는 값의 validation등도 넣을 수 있다 원래는 세상에 만연하는 BLE 디바이스의 Android용 SDK의 백엔드의 힘든 부분을 모두 짊어지기 위해 태어난 라이브러리이므로,
WriteCharacteristicAction
나 ReadCharacteristicAction
를 확장한 클래스를 구현하는 것으로 좋은 느낌에 손을 빼면서 또한 testable 느낌으로 SDK를 만들 수 있도록 설계되었습니다.이름의 유래
Bletia은 런과의 꽃 같다. 이런 느낌.
Bletia patula | Flickr - Photo Sharing!
꽃말은 「너를 잊지 마라.」. Promise/Rx wrapper이므로 꼭 좋다. 그리고 뒤에는 IoT라는 버즈 워드를 타는 각 회사에 대해 "Android를 잊지 않아"라는 메시지도 있다. 모 스마트 글라스의 Android SDK 부활을 진심으로 기원 말씀드립니다.
이용 예
예를 들어 RxBletia는
rx.Observable<T>
를 말할 수 있으므로 Characteristic에서 읽은 값을 Retrofit 클라이언트에서 Web API에 던져 반환 값을 Realm에 저장하고 같은 것을 쓸쓸하게 쓸 수 있습니다.// retrolambdaな記法で書きます
// context, client, requestCharacteristicはどっかで用意してきてね
RxBletia bletia = new RxBletia(context);
bletia.connect()
.flatMap(_void -> bletia.discoverServices())
.flatMap(_void -> bletia.readCharacteristic(requestCharacteristic))
.flatMap(characteristic -> client.get(characteristic.getValue())
.subscribe(res -> {
Realm.getDefaultInstance()
.executeTransaction(realm -> {
realm.copyToRealm(res);
});
});
Rx가 아닌 Bletia는 Promise를 반환하기 때문에 적어도 약간의 Callback Hell에서 벗어날 수 있습니다.
모두 Bletia를 사용하여 어려운 안드로이드 용 BLE 앱을 작성합시다. PR도 기다리고 있습니다.
References
Reference
이 문제에 관하여(Bletia : Android의 BLE 주변을 현대 API로 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/izumin5210/items/374d532a252c15aeb484텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)