From 5affcde3c40d6905b77642c33df8b7d2a62801bf Mon Sep 17 00:00:00 2001 From: jjangddu Date: Thu, 30 Apr 2026 12:31:20 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EA=B7=B8=EB=9E=98=ED=94=84=20Method=20?= =?UTF-8?q?=EB=8F=99=EA=B8=B0=ED=99=94,=20Spot=20=EC=BF=A8=EB=8B=A4?= =?UTF-8?q?=EC=9A=B4,=20=EC=8A=A4=EC=BA=94=20=EC=BA=90=EB=A6=AD=ED=84=B0?= =?UTF-8?q?=20=EC=84=BC=ED=84=B0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 도넛차트: - Developer Tools 그래프: 선택된 Method(A/B/C)로 분석 표시 (기존 B 고정 → 동기화) - Spot 버튼: 1.5초 쿨다운 (연속 탭 방지, 기기 회복 시간 확보) DeviceScan: - 스캐닝 캐릭터 가운데 정렬 (.fillMaxWidth()) + 크기 140→180dp Co-Authored-By: Claude Opus 4.6 (1M context) --- .../ui/views/connection/DeviceScanView.kt | 4 +-- .../views/monitoring/PiezoMonitoringView.kt | 27 +++++++++++++++---- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/example/medilightv2android/ui/views/connection/DeviceScanView.kt b/app/src/main/java/com/example/medilightv2android/ui/views/connection/DeviceScanView.kt index 7b1c101..2985bfe 100644 --- a/app/src/main/java/com/example/medilightv2android/ui/views/connection/DeviceScanView.kt +++ b/app/src/main/java/com/example/medilightv2android/ui/views/connection/DeviceScanView.kt @@ -200,11 +200,11 @@ fun DeviceScanView(appState: AppState) { // Device list if (filteredDevices.isEmpty() && isScanning) { Column( - modifier = Modifier.weight(1f), + modifier = Modifier.weight(1f).fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center ) { - BladdyIdleRiveView(size = 140.dp) + BladdyIdleRiveView(size = 180.dp) Spacer(modifier = Modifier.height(16.dp)) Text("Scanning...", color = MlSecondaryText) } diff --git a/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PiezoMonitoringView.kt b/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PiezoMonitoringView.kt index 1cecf87..d8225a6 100644 --- a/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PiezoMonitoringView.kt +++ b/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PiezoMonitoringView.kt @@ -795,10 +795,17 @@ fun PiezoMonitoringView(appState: AppState) { } } - // Spot (single measurement) + // Spot (single measurement, 1.5초 쿨다운) + var spotCooldown by remember { mutableStateOf(false) } Button( - onClick = { if (!isMeasuring && !isAutoMeasuring) measure() }, - enabled = !isMeasuring && !isAutoMeasuring, + onClick = { + if (!isMeasuring && !isAutoMeasuring && !spotCooldown) { + measure() + spotCooldown = true + handler.postDelayed({ spotCooldown = false }, 1500) + } + }, + enabled = !isMeasuring && !isAutoMeasuring && !spotCooldown, modifier = Modifier.weight(1f).height(56.dp), shape = RoundedCornerShape(14.dp), colors = ButtonDefaults.buttonColors( @@ -1078,7 +1085,14 @@ private fun ChannelPanel( } } else { // Zone indicator - val analyses = lastMultiChannelResult.map { analyzer.analyzeChannel(it.buffer, it.channel) } + val curMethod = com.example.medilightv2android.managers.GreenZoneConstants.detectionMethod + val analyzerAPanel = com.example.medilightv2android.managers.PiezoEchoAnalyzerA.shared + val analyses = lastMultiChannelResult.map { chData -> + when (curMethod) { + com.example.medilightv2android.managers.DetectionMethod.METHOD_A -> analyzerAPanel.analyzeChannel(chData.buffer, chData.channel) + else -> analyzer.analyzeChannel(chData.buffer, chData.channel) + } + } val detectedCount = analyses.count { it.isValid } val zoneColor = when { detectedCount >= 4 -> Color.Green @@ -1134,7 +1148,10 @@ private fun ChannelPanel( // Per-channel waveforms for (chData in lastMultiChannelResult.filter { it.buffer.isNotEmpty() }) { - val chAnalysis = analyzer.analyzeChannel(chData.buffer, chData.channel) + val chAnalysis = when (curMethod) { + com.example.medilightv2android.managers.DetectionMethod.METHOD_A -> analyzerAPanel.analyzeChannel(chData.buffer, chData.channel) + else -> analyzer.analyzeChannel(chData.buffer, chData.channel) + } Column(verticalArrangement = Arrangement.spacedBy(3.dp)) { // Channel header