### 🔒 RadarScreen内の変更禁止エリア(久米実装済み)
> ⚠️ 昆野へ:以下の部分は**絶対に変更しないでください**。ViewModelとの連携ロジックが含まれています。
#### 変更禁止リスト
| コード箇所 | 理由 |
|-----------|------|
| `viewModel: RadarViewModel = hiltViewModel()` | ViewModel取得。変更するとDIが壊れる |
| `val uiState by viewModel.uiState.collectAsState()` | 状態監視。変更すると状態が取得できなくなる |
| `val permissionLauncher = rememberLauncherForActivityResult(...)` | 権限リクエスト処理。変更すると権限が取得できなくなる |
| `LaunchedEffect(Unit) { viewModel.uiEvent.collect {...} }` | UIイベント監視。変更するとダイアログなどが表示されなくなる |
| `onClick = { viewModel.toggleScanning() }` | スキャンのトグル処理。変更するとBLEが動作しなくなる |
| `onClick = { viewModel.toggleAdvertising() }` | アドバタイズのトグル処理。変更すると発信できなくなる |
| `onClick = { viewModel.clearDetectedDevices() }` | リストクリア処理。変更するとクリアできなくなる |
| `uiState.detectedDeviceCount` | 検知数の参照。名前を変えると値が取れなくなる |
| `uiState.isScanning` | スキャン状態の参照。名前を変えると状態が取れなくなる |
| `uiState.isAdvertising` | アドバタイズ状態の参照。名前を変えると状態が取れなくなる |
| `uiState.isBluetoothEnabled` | Bluetooth状態の参照。名前を変えると状態が取れなくなる |
#### ✏️ 昆野が自由に編集できる箇所
| コード箇所 | 編集内容 |
|-----------|---------|
| `Scaffold` のレイアウト構造 | レイアウト全体の構成変更OK |
| `Text` のスタイル・色・フォント | デザイン変更OK |
| `Button` のデザイン(色、形、サイズ) | 見た目の変更OK(onClickは変更禁止) |
| レーダーアニメーション | 新規実装OK(TODO部分) |
| 検知リストの表示UI | 新規実装OK(`uiState.detectedDevices`を使用) |
#### コード内の目印
RadarScreen.kt内に以下のコメントで区別しています:
```kotlin
// ========================================
// 🔒 久米実装: 変更禁止
// ========================================
// ========================================
// ✏️ 昆野担当: 以下は自由に編集可能
// ========================================
// TODO: 昆野 - (具体的な実装内容)
```kotlin
// TODO: 昆野 - ステータス表示のデザインを改善
Text(
text = when {
!uiState.isBluetoothEnabled -> "⚠️ Bluetoothをオンにしてください"
uiState.isEncounterActive -> "🔍 すれ違い通信中..."
else -> "待機中"
},
style = MaterialTheme.typography.bodyLarge
)
Spacer(modifier = Modifier.height(16.dp))
// ========================================
// 🔒 久米実装: ボタンのonClickは変更禁止
// ✏️ 昆野担当: ボタンのデザイン(色、形、サイズ)は変更可能
// すれ違い通信ボタン(スキャン+アドバタイズ同時実行)
// ========================================
Button(
onClick = { viewModel.toggleEncounter() } // 🔒 変更禁止
) {
// TODO: 昆野 - ボタンデザインを改善(アイコン追加など)
Text(if (uiState.isEncounterActive) "すれ違い通信停止" else "すれ違い通信開始")
}
// ========================================
// 🔒 久米実装: ボタンのonClickは変更禁止
// ✏️ 昆野担当: ボタンのデザイン(色、形、サイズ)は変更可能
// ========================================
- BleManager
- RadarViewModel