はじめに
今回も前回に引き続きJetpackComposeでのバーコード読み取り機能を実装していきます。
本文
下記のコードをViewModelに追加することで実際にコードを読み取った時にやりたい処理をすることができます
private val qrCodeFlow = MutableSharedFlow<Barcode>()
val qrCodeAnalyzeUseCase: ImageAnalysis = ImageAnalysis.Builder()
.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
.build()
.apply {
setAnalyzer(
Executors.newSingleThreadExecutor(),
BarCodeScanner { barcode ->
viewModelScope.launch {
qrCodeFlow.emit(barcode)
}
},
)
}
init {
intentRepeatOnSubscription { scope ->
qrCodeFlow
.debounce(100.milliseconds)
.filter { state.isAnalysing }
.mapNotNull { barcode -> barcode.rawValue }
.onEach {
// やりたい処理を呼び出し
}
.launchIn(scope)
}
}
次で最後になります
記事を書き次第リンクを追加しようと思っています