hiro99ma blog

何か技術的なこと

android: データレイヤーとBLE

2024/10/27

BLE機器操作について、あとは Repository と Data source を何とかすれば終わりだろう、と軽く考えていたのだが、 まったくイメージが沸かないことに気付く。。。

Codelabs をやろう。

BLEの場合、スキャンを開始すると OS が非同期でデバイス情報を返してくる。
ViewModel でやっていたときは StateFlow を使っていたが Repository の場合はどうするとよいのだろうか?
しばしばそういう場合がありそうに思うが、思いつかないのでこれもコールバック方式にする。

データレイヤーはsuspend関数と書いてあるがコールバックにしたので外した。
「Javaの場合はコールバックなど」とあったので、Kotlin だとあまりやらない方法なのかもしれない。

LedControlRepositoryのDIBleScanを引数にしつつ、BleScanもDIで解決するやり方を@Providesで書くことができなかった。
どうやるとよいのだろう?
今回は @Binds で回避したのだが、できると思うのだよねぇ。

今日はここまで。

追記

@Provides でできた。
fun provideLedControlRepository(bleScan: BleScan)のように引数に入れておき、そちらが DI で解決されるということのようだ。

< Top page