diff --git a/app-android/app/src/main/java/com/huaga/life_echo/MainActivity.kt b/app-android/app/src/main/java/com/huaga/life_echo/MainActivity.kt index c48dbc6..427dcfe 100644 --- a/app-android/app/src/main/java/com/huaga/life_echo/MainActivity.kt +++ b/app-android/app/src/main/java/com/huaga/life_echo/MainActivity.kt @@ -25,7 +25,6 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.statusBars import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.ui.draw.scale import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold @@ -39,18 +38,18 @@ import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.scale import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewScreenSizes import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.core.view.WindowCompat -import androidx.core.view.WindowInsetsControllerCompat import androidx.core.view.WindowInsetsCompat +import androidx.core.view.WindowInsetsControllerCompat import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.rememberNavController -import androidx.compose.ui.platform.LocalContext import com.huaga.life_echo.data.auth.TokenManager import com.huaga.life_echo.navigation.AppNavigation import com.huaga.life_echo.navigation.Screen diff --git a/app-android/app/src/main/java/com/huaga/life_echo/navigation/AppNavigation.kt b/app-android/app/src/main/java/com/huaga/life_echo/navigation/AppNavigation.kt index 499c706..0844b9e 100644 --- a/app-android/app/src/main/java/com/huaga/life_echo/navigation/AppNavigation.kt +++ b/app-android/app/src/main/java/com/huaga/life_echo/navigation/AppNavigation.kt @@ -25,6 +25,7 @@ sealed class Screen(val route: String) { object MyOrders : Screen("my_orders") object ExportData : Screen("export_data") object PlanDetails : Screen("plan_details") + object PlanBalance : Screen("plan_balance") // 套餐余额 object FAQ : Screen("faq") object Feedback : Screen("feedback") object About : Screen("about") @@ -134,6 +135,15 @@ fun AppNavigation( ) { PlanDetailsScreen(navController = navController) } + composable( + route = Screen.PlanBalance.route, + enterTransition = { slideInHorizontally() }, + exitTransition = { slideOutHorizontally() }, + popEnterTransition = { slideInHorizontallyFromLeft() }, + popExitTransition = { slideOutHorizontallyToRight() } + ) { + PlanBalanceScreen(navController = navController) + } composable( route = Screen.FAQ.route, enterTransition = { slideInHorizontally() }, diff --git a/app-android/app/src/main/java/com/huaga/life_echo/network/WebSocketClient.kt b/app-android/app/src/main/java/com/huaga/life_echo/network/WebSocketClient.kt index f8fe51c..fa963d7 100644 --- a/app-android/app/src/main/java/com/huaga/life_echo/network/WebSocketClient.kt +++ b/app-android/app/src/main/java/com/huaga/life_echo/network/WebSocketClient.kt @@ -234,6 +234,20 @@ class WebSocketClient { )) } + /** + * 仅转写:发送音频获取文字,不落库、不触发 Agent,用于「转文字」后客户端再发文本 + */ + suspend fun sendTranscribeOnly(audioBytes: ByteArray, conversationId: String) { + Log.d(TAG, "发送仅转写请求,大小: ${audioBytes.size} 字节") + if (!isConnected) throw Exception("WebSocket未连接,请先建立连接") + val base64Audio = android.util.Base64.encodeToString(audioBytes, android.util.Base64.NO_WRAP) + sendMessage(WebSocketMessage( + type = MessageType.transcribe_only, + conversation_id = conversationId, + data = buildJsonObject { put("audio_base64", JsonPrimitive(base64Audio)) } + )) + } + suspend fun sendTextMessage(text: String, conversationId: String) { Log.d(TAG, "准备发送文本消息: $text") if (!isConnected) { diff --git a/app-android/app/src/main/java/com/huaga/life_echo/network/WebSocketMessage.kt b/app-android/app/src/main/java/com/huaga/life_echo/network/WebSocketMessage.kt index 4758d03..594859a 100644 --- a/app-android/app/src/main/java/com/huaga/life_echo/network/WebSocketMessage.kt +++ b/app-android/app/src/main/java/com/huaga/life_echo/network/WebSocketMessage.kt @@ -10,6 +10,7 @@ enum class MessageType { connect, audio_chunk, audio_message, // 完整音频消息(类似微信语音) + transcribe_only, // 仅转写,不落库不触发 Agent,用于「转文字」发送 text, // 文本消息 transcript, // 语音转文字结果 agent_response,