保真网-示例
应用介绍
# UHF 设备通信应用
## 项目简介
本项目整合了两个UHF示例项目(uhf-ble-demo和uhf-uart-demo),实现了通过蓝牙和串口两种方式与UHF设备通信的功能。
## 功能特点
- 支持蓝牙通信方式连接UHF设备
- 支持串口通信方式连接UHF设备
- 提供统一的接口,可以无缝切换两种通信方式
- 支持UHF标签的读取、写入、锁定、销毁等操作
- 支持UHF标签的定位功能
- 支持UHF设备参数设置
## 项目结构
```
app/
├── src/main/
│ ├── java/com/example/uhf/
│ │ ├── activity/ # 活动类
│ │ ├── adapter/ # 适配器类
│ │ ├── communication/ # 通信相关类
│ │ │ ├── ble/ # 蓝牙通信实现
│ │ │ ├── nfc/ # NFC通信实现
│ │ │ └── uart/ # 串口通信实现
│ │ ├── fragment/ # 界面片段类
│ │ ├── interfaces/ # 接口定义
│ │ ├── model/ # 数据模型类
│ │ ├── tools/ # 工具类
│ │ ├── view/ # 自定义视图类
│ │ └── widget/ # 自定义控件类
│ ├── res/ # 资源文件
│ └── AndroidManifest.xml # 应用清单文件
├── libs/ # 依赖库
└── build.gradle # 构建配置文件
```
## 使用方法
1. 选择通信方式(蓝牙或串口)
2. 连接UHF设备
3. 使用相应功能(读取、写入、锁定等)
## 开发环境
- Android Studio
- minSdkVersion: 24 (已从19升级)
- targetSdkVersion: 33 (已从29升级)
- compileSdkVersion: 33
## 项目完成状态
### 已完成功能
- ✅ 蓝牙通信模块 (BluetoothCommunication)
- ✅ 串口通信模块 (SerialCommunication)
- ✅ NFC通信模块 (NFCCommunication)
- ✅ 通信工厂类 (CommunicationFactory)
- ✅ 统一通信接口 (UHFCommunication)
- ✅ 增强型通信工厂 (EnhancedUHFCommunicationFactory)
- ✅ 蓝牙设备选择界面
- ✅ 串口设置界面
- ✅ NFC数据读取界面
- ✅ OCR文字识别功能
- ✅ 二维码扫描功能
### 已解决问题
- ✅ Android 12+ 蓝牙权限适配
- ✅ 多DEX文件支持配置
- ✅ TLS协议安全配置
- ✅ Gradle构建脚本优化
- ✅ 解决IncrementalTaskInputs接口过时问题
- ✅ 修复AndroidManifest合并冲突
### 已优化项
#### 性能优化
- ✅ 设备扫描优化
- 实现智能扫描间隔调整
- 添加扫描结果缓存机制
- 引入设备黑名单机制,过滤无关设备
#### 电池优化
- ✅ 蓝牙扫描策略优化
- 采用低功耗扫描模式
- 实现自适应扫描周期
- 添加距离感知的扫描功率调节
- 后台扫描限制
#### 用户界面优化
- ✅ 操作流程改进
- 简化设备连接步骤
- 添加操作引导提示
- 优化错误提示信息
- 增加进度反馈
#### API文档完善
- ✅ 详细API使用说明
- 添加完整的方法说明文档
- 提供代码示例
- 补充异常处理说明
- 更新最佳实践指南
## 常见问题修复指南
### 编译错误修复
1. **AsyncTask类相关问题**
- 创建了AsyncTaskCompat类作为替代方案
- 位置:`com.example.uhf.util.AsyncTaskCompat`
2. **缺失类导入修复**
- BarcodeFragment.java需添加:
```java
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import android.os.Looper;
```
- SettingsActivity.java和BaseActivity.java需添加:
```java
import android.os.Build;
```
3. **Toast上下文问题**
- 使用Activity实例作为上下文
- 示例:`Toast.makeText(ActivityName.this, message, Toast.LENGTH_SHORT).show();`
### 过时API处理
1. **Handler()构造函数**
- 推荐使用:`new Handler(Looper.getMainLooper())`
2. **getPackageInfo()方法**
- Android 13及以上:使用 `PackageManager.PackageInfoFlags.of(flags)`
- Android 13以下:继续使用 `flags`参数
### 注意事项
1. ProgressDialog已弃用,建议使用ProgressBar或AlertDialog
2. 可使用@SuppressWarnings("deprecation")注解处理过时API警告
3. R类问题可通过清理项目并重新构建解决
发表评论 取消回复