Build, maintain, and extend the EarLLM One Android project — a Kotlin/Compose app that connects Bluetooth earbuds to an LLM via voice pipeline.技能概述earllm-build 技能构建、维护和扩展EarLLM One Android项目 — 一个Kotlin/Compose应用,通过语音管道将蓝牙耳机连接到LLM。这是一个多模块Android应用,捕获蓝牙耳机的语音,转录它,发送到LLM,并语音回复。下载地址:https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/earllm-build触发条件当用户提到earllm或相关主题当用户提到earbudllm或相关主题当用户提到earbud app或相关主题当用户提到voice pipeline kotlin或相关主题当用户提到bluetooth audio android或相关主题当用户提到sco microphone或相关主题模块依赖图app ──→ voice ──→ audio ──→ core-logging│ ││ ├──→ bluetooth ──→ core-logging│ │└──→ llm ──→ core-logging模块与关键文件core-logging结构化日志记录、性能跟踪 | EarLogger.kt, PerformanceTracker.ktbluetoothBT发现、配对、A2DP/HFP配置文件 | BluetoothController.kt, BluetoothState.ktaudio音频路由(SCO/BLE)、捕获、耳机按钮 | AudioRouteController.kt, VoiceCaptureController.ktvoiceSTT、TTS、管道 | SpeechToTextController.kt, TextToSpeechController.kt, VoicePipeline.ktllmLLM接口、存根、OpenAI兼容客户端 | LlmClient.kt, StubLlmClient.kt, RealLlmClient.kt关键技​​术事实蓝牙SCO在大多数设备上仅限于8kHz单声道输入startBluetoothSco()自Android 12(API 31)起已弃用Samsung One UI 7/8有已知的HFP损坏错误Redmi Buds 6 Pro点击控件必须设置为默认(播放/暂停)Android 14需要FOREGROUND_SERVICE_MICROPHONE权限VOICE_COMMUNICATION音频源启用AEC永远不要在通过SCO录制的同时播放TTS(A2DP)数据流耳机按钮点击 → MediaSession (HeadsetButtonController) → TapAction.RECORD_TOGGLE → VoicePipeline.toggleRecording() → VoiceCaptureController捕获PCM (16kHz单声道) → stopRecording()返回ByteArray → SpeechToTextController.transcribe(pcmData) → LlmClient.chat(messages) → TextToSpeechController.speak(response) → 通过A2DP音频输出到耳机添加新功能识别哪些模块受到影响首先阅读这些模块中的现有代码遵循StateFlow模式 — 通过MutableStateFlow / StateFlow暴露状态如果功能需要UI集成,更新MainViewModel.kt在模块的src/test/目录中添加单元测试如果功能更改行为,更新文档