| | |
| | | import androidx.activity.compose.setContent |
| | | import androidx.activity.enableEdgeToEdge |
| | | import androidx.compose.foundation.layout.* |
| | | import androidx.compose.foundation.rememberScrollState |
| | | import androidx.compose.foundation.verticalScroll |
| | | import androidx.compose.material3.* |
| | | import androidx.compose.runtime.mutableStateOf |
| | | import androidx.compose.runtime.* |
| | |
| | | onStopUsbPush: () -> Unit |
| | | ) { |
| | | Column( |
| | | modifier = Modifier |
| | | .fillMaxSize() |
| | | .padding(16.dp), |
| | | horizontalAlignment = Alignment.CenterHorizontally, |
| | | verticalArrangement = Arrangement.spacedBy(12.dp) |
| | | modifier = Modifier.fillMaxSize() |
| | | ) { |
| | | Text( |
| | | text = "FloatingService 控制", |
| | | style = MaterialTheme.typography.headlineMedium, |
| | | modifier = Modifier.padding(bottom = 8.dp) |
| | | ) |
| | | |
| | | Text( |
| | | text = if (isServiceBound) "服务状态: 已绑定" else "服务状态: 未绑定", |
| | | style = MaterialTheme.typography.bodyMedium, |
| | | color = if (isServiceBound) MaterialTheme.colorScheme.primary else MaterialTheme.colorScheme.error, |
| | | modifier = Modifier.padding(bottom = 16.dp) |
| | | ) |
| | | |
| | | // 按钮 1: 绑定服务 |
| | | Button( |
| | | onClick = onBindService, |
| | | modifier = Modifier.fillMaxWidth(), |
| | | enabled = !isServiceBound |
| | | // 固定顶部:标题和状态 |
| | | Column( |
| | | modifier = Modifier |
| | | .fillMaxWidth() |
| | | .padding(16.dp), |
| | | horizontalAlignment = Alignment.CenterHorizontally |
| | | ) { |
| | | Text("1. 绑定 FloatingService") |
| | | Text( |
| | | text = "FloatingService 控制", |
| | | style = MaterialTheme.typography.headlineMedium, |
| | | modifier = Modifier.padding(bottom = 8.dp) |
| | | ) |
| | | |
| | | Text( |
| | | text = if (isServiceBound) "服务状态: 已绑定" else "服务状态: 未绑定", |
| | | style = MaterialTheme.typography.bodyMedium, |
| | | color = if (isServiceBound) MaterialTheme.colorScheme.primary else MaterialTheme.colorScheme.error, |
| | | modifier = Modifier.padding(bottom = 16.dp) |
| | | ) |
| | | } |
| | | |
| | | // 按钮 2: 解绑服务 |
| | | Button( |
| | | onClick = onUnbindService, |
| | | modifier = Modifier.fillMaxWidth(), |
| | | enabled = isServiceBound |
| | | Divider() |
| | | |
| | | // 可滚动的按钮列表 |
| | | Column( |
| | | modifier = Modifier |
| | | .fillMaxSize() |
| | | .verticalScroll(rememberScrollState()) |
| | | .padding(horizontal = 16.dp), |
| | | horizontalAlignment = Alignment.CenterHorizontally, |
| | | verticalArrangement = Arrangement.spacedBy(12.dp) |
| | | ) { |
| | | Text("2. 解绑 FloatingService") |
| | | } |
| | | |
| | | Divider(modifier = Modifier.padding(vertical = 8.dp)) |
| | | |
| | | // 按钮 3: 开始 Android 相机录像 |
| | | Button( |
| | | onClick = onStartAndroidRecord, |
| | | modifier = Modifier.fillMaxWidth(), |
| | | enabled = isServiceBound |
| | | ) { |
| | | Text("3. 开始 Android 相机录像") |
| | | } |
| | | |
| | | // 按钮 4: 结束 Android 相机录像 |
| | | Button( |
| | | onClick = onStopAndroidRecord, |
| | | modifier = Modifier.fillMaxWidth(), |
| | | enabled = isServiceBound |
| | | ) { |
| | | Text("4. 结束 Android 相机录像") |
| | | } |
| | | |
| | | Divider(modifier = Modifier.padding(vertical = 8.dp)) |
| | | |
| | | // 按钮 5: 开始 USB 相机录像 |
| | | Button( |
| | | onClick = onStartUsbRecord, |
| | | modifier = Modifier.fillMaxWidth(), |
| | | enabled = isServiceBound |
| | | ) { |
| | | Text("5. 开始 USB 相机录像") |
| | | } |
| | | |
| | | // 按钮 6: 结束 USB 相机录像 |
| | | Button( |
| | | onClick = onStopUsbRecord, |
| | | modifier = Modifier.fillMaxWidth(), |
| | | enabled = isServiceBound |
| | | ) { |
| | | Text("6. 结束 USB 相机录像") |
| | | } |
| | | |
| | | Divider(modifier = Modifier.padding(vertical = 8.dp)) |
| | | |
| | | // 按钮 7: 开始 USB 推流 |
| | | Button( |
| | | onClick = onStartUsbPush, |
| | | modifier = Modifier.fillMaxWidth(), |
| | | enabled = isServiceBound |
| | | ) { |
| | | Text("7. 开始 USB 推流") |
| | | } |
| | | |
| | | // 按钮 8: 结束 USB 推流 |
| | | Button( |
| | | onClick = onStopUsbPush, |
| | | modifier = Modifier.fillMaxWidth(), |
| | | enabled = isServiceBound |
| | | ) { |
| | | Text("8. 结束 USB 推流") |
| | | Spacer(modifier = Modifier.height(12.dp)) |
| | | |
| | | // 按钮 1: 绑定服务 |
| | | Button( |
| | | onClick = onBindService, |
| | | modifier = Modifier.fillMaxWidth(), |
| | | enabled = !isServiceBound |
| | | ) { |
| | | Text("1. 绑定 FloatingService") |
| | | } |
| | | |
| | | // 按钮 2: 解绑服务 |
| | | Button( |
| | | onClick = onUnbindService, |
| | | modifier = Modifier.fillMaxWidth(), |
| | | enabled = isServiceBound |
| | | ) { |
| | | Text("2. 解绑 FloatingService") |
| | | } |
| | | |
| | | Divider(modifier = Modifier.padding(vertical = 8.dp)) |
| | | |
| | | // 按钮 3: 开始 Android 相机录像 |
| | | Button( |
| | | onClick = onStartAndroidRecord, |
| | | modifier = Modifier.fillMaxWidth(), |
| | | enabled = isServiceBound |
| | | ) { |
| | | Text("3. 开始 Android 相机录像") |
| | | } |
| | | |
| | | // 按钮 4: 结束 Android 相机录像 |
| | | Button( |
| | | onClick = onStopAndroidRecord, |
| | | modifier = Modifier.fillMaxWidth(), |
| | | enabled = isServiceBound |
| | | ) { |
| | | Text("4. 结束 Android 相机录像") |
| | | } |
| | | |
| | | Divider(modifier = Modifier.padding(vertical = 8.dp)) |
| | | |
| | | // 按钮 5: 开始 USB 相机录像 |
| | | Button( |
| | | onClick = onStartUsbRecord, |
| | | modifier = Modifier.fillMaxWidth(), |
| | | enabled = isServiceBound |
| | | ) { |
| | | Text("5. 开始 USB 相机录像") |
| | | } |
| | | |
| | | // 按钮 6: 结束 USB 相机录像 |
| | | Button( |
| | | onClick = onStopUsbRecord, |
| | | modifier = Modifier.fillMaxWidth(), |
| | | enabled = isServiceBound |
| | | ) { |
| | | Text("6. 结束 USB 相机录像") |
| | | } |
| | | |
| | | Divider(modifier = Modifier.padding(vertical = 8.dp)) |
| | | |
| | | // 按钮 7: 开始 USB 推流 |
| | | Button( |
| | | onClick = onStartUsbPush, |
| | | modifier = Modifier.fillMaxWidth(), |
| | | enabled = isServiceBound |
| | | ) { |
| | | Text("7. 开始 USB 推流") |
| | | } |
| | | |
| | | // 按钮 8: 结束 USB 推流 |
| | | Button( |
| | | onClick = onStopUsbPush, |
| | | modifier = Modifier.fillMaxWidth(), |
| | | enabled = isServiceBound |
| | | ) { |
| | | Text("8. 结束 USB 推流") |
| | | } |
| | | |
| | | Spacer(modifier = Modifier.height(12.dp)) |
| | | } |
| | | } |
| | | } |