Skip to content

feat: Android native app with Go backend#7

Open
huadaox wants to merge 1 commit into
mainfrom
feat/android-native-app
Open

feat: Android native app with Go backend#7
huadaox wants to merge 1 commit into
mainfrom
feat/android-native-app

Conversation

@huadaox

@huadaox huadaox commented Jun 8, 2026

Copy link
Copy Markdown
Owner

概述

本 PR 添加了 Android 原生应用实现,使用 Go 后端 + Kotlin 前端方案。

技术方案

后端 (Go)

  • 使用 Go 1.22+ 构建高性能后端
  • gorilla/websocket 处理 WebSocket 通信
  • SQLite 本地存储历史记录
  • 可通过 gomobile 编译为 Android 原生库

前端 (Kotlin + Jetpack Compose)

  • 使用 Android AudioRecord API 进行实时音频采集
  • Java-WebSocket 处理 WebSocket 通信
  • Jetpack Compose 构建现代化 UI
  • Material Design 3 设计语言

功能特性

  • ✅ 实时音频采集 (16kHz PCM)
  • ✅ WebSocket 实时通信
  • ✅ 实时字幕显示
  • ✅ 音频波形可视化
  • ✅ 多语言支持
  • ✅ 历史记录管理
  • ✅ 本地后端运行

文件结构

android/
├── app/src/main/java/com/simultaneoustranslator/
│   ├── MainActivity.kt
│   ├── audio/AudioCaptureManager.kt
│   ├── websocket/WebSocketManager.kt
│   └── ui/
│       ├── screens/
│       ├── components/
│       ├── viewmodels/
│       └── theme/
└── build.gradle

go-backend/
├── main.go
└── go.mod

测试方法

  1. 构建 Go 后端:

    cd go-backend
    go mod tidy
    go run main.go
  2. 用 Android Studio 打开 android/ 目录

  3. 连接 Android 设备或启动模拟器

  4. 运行应用

  5. 在设置中配置服务器地址

  6. 开始使用

注意事项

  • Go 后端需要本地运行以保证实时性
  • Android 模拟器使用 ws://10.0.2.2:8000/ws 连接本地后端
  • 真机测试需要修改为实际服务器 IP
  • 需要麦克风权限才能进行音频采集

相关文档

详见 ANDROID_README.md

- Add Go backend (go-backend/) with WebSocket server and SQLite storage
- Add Android app (android/) with Kotlin + Jetpack Compose
- Implement audio capture using Android AudioRecord API
- Implement WebSocket client for real-time communication
- Add UI components: WaveformVisualizer, SubtitleCard
- Add screens: TranslationScreen, SettingsScreen
- Add build script for Android app
- Add ANDROID_README.md with documentation
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant