You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mcslms/android/FEATURE_ENHANCEMENTS.md

7.9 KiB

Android APK功能增强总结

概述

基于"分层架构HelloWorldAndroid版AI问答系统"的参考实现我们为智能图书馆管理系统Android应用添加了以下增强功能。

新增功能

1. 🎨 UML图生成器 (UMLGeneratorFragment)

功能描述

  • 在线实时生成PlantUML图表
  • 支持双服务器PlantUML官方 + Kroki
  • 自动故障转移机制
  • 内置示例代码

技术特点

  • 使用OkHttp进行HTTP请求
  • 支持服务器选择PlantUML/Kroki
  • 自动故障转移:当一个服务器失败时,自动切换到备用服务器
  • 实时状态反馈
  • 图片预览功能

使用方法

  1. 点击主界面的"🎨 UML图生成器在线"按钮
  2. 选择服务器PlantUML官方或Kroki
  3. 输入或编辑PlantUML代码
  4. 点击"生成图表"按钮
  5. 查看生成的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流程

  1. 认证使用HMAC-SHA256生成签名URL
  2. 连接建立WebSocket连接
  3. 发送开始帧:包含音频格式信息
  4. 流式发送音频分块Base64编码后发送
  5. 发送结束帧:标记音频结束
  6. 接收结果:实时解析识别文本

关键代码

// 音频数据必须封装在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 ComponentsUI组件

已配置的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模拟器音频问题

问题:语音识别总是失败 解决:必须在真实物理设备上测试

测试建议

功能测试

  1. UML生成器测试

    • 测试PlantUML服务器
    • 测试Kroki服务器
    • 测试故障转移机制
    • 测试无效PUML代码处理
  2. AI对话测试

    • 测试DeepSeek响应
    • 测试智谱AI响应
    • 测试网络错误处理
  3. 语音功能测试(需真实设备):

    • 测试语音识别准确性
    • 测试语音播报效果
    • 测试权限请求

性能测试

  • 网络请求响应时间
  • 图片加载和显示性能
  • 内存使用情况
  • 电池消耗

未来增强方向

短期计划

  1. 离线UML生成

    • 研究Android兼容的UML库
    • 实现基本的类图生成
  2. 语音优化

    • 支持更多语音角色
    • 添加语速、音调控制
    • 实现语音唤醒
  3. AI对话增强

    • 保持对话上下文
    • 支持多轮对话
    • 添加对话历史

长期计划

  1. 多语言支持

    • 英语、日语等
    • 自动语言检测
  2. 离线AI

    • 集成轻量级AI模型
    • 实现完全离线运行
  3. 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平台集成