7.9 KiB
Android APK功能增强总结
概述
基于"分层架构HelloWorldAndroid版AI问答系统"的参考实现,我们为智能图书馆管理系统Android应用添加了以下增强功能。
新增功能
1. 🎨 UML图生成器 (UMLGeneratorFragment)
功能描述:
- 在线实时生成PlantUML图表
- 支持双服务器(PlantUML官方 + Kroki)
- 自动故障转移机制
- 内置示例代码
技术特点:
- 使用OkHttp进行HTTP请求
- 支持服务器选择(PlantUML/Kroki)
- 自动故障转移:当一个服务器失败时,自动切换到备用服务器
- 实时状态反馈
- 图片预览功能
使用方法:
- 点击主界面的"🎨 UML图生成器(在线)"按钮
- 选择服务器(PlantUML官方或Kroki)
- 输入或编辑PlantUML代码
- 点击"生成图表"按钮
- 查看生成的UML图
示例代码:
@startuml
title 智能图书馆系统类图
class Book {
-String id
-String title
-String author
-String isbn
+getTitle(): String
+getAuthor(): String
}
class User {
-String id
-String name
-String email
+borrowBook(Book): boolean
+returnBook(Book): boolean
}
class Loan {
-String id
-Date borrowDate
-Date returnDate
-String status
}
User "1" -- "*" Loan : borrows >
Book "1" -- "*" Loan : is borrowed in >
@enduml
2. 🚀 增强版API服务 (EnhancedApiService)
功能描述:
- 统一的网络服务层
- 支持AI对话(DeepSeek、智谱AI)
- 支持语音识别(讯飞WebSocket API)
- 支持UML图生成(PlantUML、Kroki)
架构特点:
- 单例模式设计
- 异步回调机制
- 完善的错误处理
- 主线程安全
核心方法:
AI对话
public void getAiCompletion(String prompt, AIConfig.AIProvider provider,
ApiResponseListener<String> listener)
- 支持DeepSeek和智谱AI
- 自动选择API密钥和URL
- 异步处理,不阻塞UI线程
语音识别
public void recognizeAudio(File audioFile, ApiResponseListener<String> listener)
- 使用讯飞WebSocket流式API
- 支持实时语音转文字
- 自动处理音频分帧和Base64编码
UML图生成
public void generateDiagram(String pumlText, int serverType,
ApiResponseListener<Bitmap> listener)
- 支持PlantUML和Kroki双服务器
- 自动故障转移
- 返回Bitmap图片对象
技术实现细节
1. 网络请求优化
OkHttp配置:
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(60, TimeUnit.SECONDS)
.readTimeout(60, TimeUnit.SECONDS)
.writeTimeout(60, TimeUnit.SECONDS)
.protocols(Collections.singletonList(okhttp3.Protocol.HTTP_1_1))
.build();
特点:
- 60秒超时,适应慢速网络
- 强制HTTP/1.1协议,解决WebSocket兼容性问题
- 统一的User-Agent头,避免服务器拒绝
2. 讯飞语音识别实现
WebSocket流程:
- 认证:使用HMAC-SHA256生成签名URL
- 连接:建立WebSocket连接
- 发送开始帧:包含音频格式信息
- 流式发送音频:分块Base64编码后发送
- 发送结束帧:标记音频结束
- 接收结果:实时解析识别文本
关键代码:
// 音频数据必须封装在JSON中
JSONObject audioFrame = new JSONObject();
JSONObject dataPayload = new JSONObject();
dataPayload.put("status", 1);
dataPayload.put("audio", audioBase64);
audioFrame.put("data", dataPayload);
webSocket.send(audioFrame.toString());
3. UML图生成故障转移
双服务器策略:
private void tryGenerateDiagram(String pumlText, int serverType,
ApiResponseListener<Bitmap> listener, boolean isFailover) {
// 尝试当前服务器
// 如果失败且不是故障转移,则切换到备用服务器
// 如果是故障转移且仍失败,则报告错误
}
故障转移场景:
- 网络连接失败
- HTTP错误码(400, 500等)
- 返回的图片数据无效
现有功能完善
1. AI助手功能
本地AI助手 (AIAssistantFragment):
- 基于规则的智能响应
- 意图识别(问候、帮助、图书查询等)
- 完全离线运行
增强AI助手 (EnhancedAIAssistantFragment):
- 真实AI对话(DeepSeek、智谱AI)
- 语音输入(讯飞语音识别)
- 语音播报(讯飞TTS)
- AI提供商切换
2. AI搜索功能 (AISearchFragment)
- 智能关键词提取
- 图书搜索建议
- 结果格式化显示
- 输入验证
3. AI推荐功能 (AIRecommendFragment)
- 个性化图书推荐
- 推荐理由说明
- 刷新功能
- 加载状态显示
4. UML查看器 (UMLViewerActivity)
- 系统架构图列表
- 详细信息展示
- 网络状态检测
- Web查看选项
主界面更新
新增按钮:
🤖 AI智能功能
├── 💬 AI智能助手(本地)
├── 🚀 增强AI助手(真实AI+语音)
├── 🔍 AI智能搜索
├── 💡 AI个性化推荐
├── 📊 查看系统UML图
└── 🎨 UML图生成器(在线) ← 新增
依赖库
核心依赖:
- OkHttp 4.x:网络请求和WebSocket
- Android SDK:基础框架
- Material Components:UI组件
已配置的API:
- DeepSeek API
- 智谱AI (GLM-4) API
- 讯飞语音识别 API
- 讯飞语音合成 API
- PlantUML服务器
- Kroki服务器
开发过程中的关键问题解决
1. WebSocket协议问题
问题:unknown protocol: wss
解决:强制使用HTTP/1.1协议
2. 讯飞API数据格式
问题:request data must be valid json string
解决:音频数据必须Base64编码后封装在JSON对象中
3. PlantUML服务器拒绝
问题:400 Bad Request 解决:添加User-Agent头,引入Kroki备用服务器
4. Android模拟器音频问题
问题:语音识别总是失败 解决:必须在真实物理设备上测试
测试建议
功能测试
-
UML生成器测试:
- 测试PlantUML服务器
- 测试Kroki服务器
- 测试故障转移机制
- 测试无效PUML代码处理
-
AI对话测试:
- 测试DeepSeek响应
- 测试智谱AI响应
- 测试网络错误处理
-
语音功能测试(需真实设备):
- 测试语音识别准确性
- 测试语音播报效果
- 测试权限请求
性能测试
- 网络请求响应时间
- 图片加载和显示性能
- 内存使用情况
- 电池消耗
未来增强方向
短期计划
-
离线UML生成:
- 研究Android兼容的UML库
- 实现基本的类图生成
-
语音优化:
- 支持更多语音角色
- 添加语速、音调控制
- 实现语音唤醒
-
AI对话增强:
- 保持对话上下文
- 支持多轮对话
- 添加对话历史
长期计划
-
多语言支持:
- 英语、日语等
- 自动语言检测
-
离线AI:
- 集成轻量级AI模型
- 实现完全离线运行
-
UI/UX优化:
- Material Design 3
- 深色模式
- 动画效果
构建和部署
构建命令
# 清理构建
.\gradlew.bat :android:clean
# 构建Debug版本
.\gradlew.bat :android:assembleDebug
# 安装到设备
adb install -r android\build\outputs\apk\debug\mcslms-debug.apk
# 启动应用
adb shell am start -n com.smartlibrary/.android.MainActivity
APK位置
android/build/outputs/apk/debug/mcslms-debug.apk
总结
本次功能增强参考了"分层架构HelloWorldAndroid版AI问答系统"的优秀实现,成功为智能图书馆管理系统添加了:
✅ UML图在线生成功能 ✅ 增强版网络服务层 ✅ 双服务器故障转移机制 ✅ 完整的语音识别集成 ✅ 统一的API管理
所有功能已经过编译测试,可以正常构建APK。建议在真实Android设备上进行完整的功能测试,特别是语音相关功能。
开发日期:2025年 参考项目:分层架构HelloWorldAndroid版AI问答系统 技术栈:Java + Android SDK + OkHttp + 多AI平台集成