这是一个基于Android平台的空调控制应用,通过串口通信与空调硬件进行数据交互。本项目从Android 6.0成功移植到Android 14,支持现代Android设备的运行。
- 默认串口路径:
/dev/ttyS3 - 波特率: 9600 bps
- 数据位: 8位
- 停止位: 1位
- 校验位: 无校验
- 权限要求: 需要root权限修改设备权限
- 嵌入式Android设备(工控板、车载终端等)
- 支持串口通信的Android设备
- 架构支持:ARM32/ARM64, x86/x86_64
- Android Support库 → AndroidX
android.support.v7.app.AppCompatActivity→androidx.appcompat.app.AppCompatActivityandroid.support.annotation.Nullable→androidx.annotation.Nullable- 更新所有相关依赖库到最新版本
- 目标SDK版本: 从API 23升级到API 34
- 最低SDK版本: 从API 12升级到API 21
- 权限更新:
- 添加Android 13+媒体权限
- 添加Android 14通知权限
- 配置存储权限的maxSdkVersion
- 组件配置:
- 添加
android:exported属性 - 移除已弃用的
package属性 - 添加数据提取和备份规则
- 添加
- Gradle版本: 8.13
- Android Gradle Plugin: 8.12.2
- Java版本: 17
- 编译SDK: API 34
- 目标SDK: API 34
- 修复switch语句常量表达式问题
- 更新导入语句适配AndroidX
- 修复AndroidManifest.xml中的命名空间问题
- Android Studio: 2023.1.1或更高版本
- JDK: 17或更高版本
- Android SDK: API 34
- NDK: 27.0.12077973或更高版本
- Gradle: 8.13
# gradle.properties配置
org.gradle.java.home=C:\\Program Files\\Java\\jdk-17
android.sdk.dir=C:\\Users\\[用户名]\\AppData\\Local\\Android\\Sdk
android.ndk.dir=C:\\Users\\[用户名]\\AppData\\Local\\Android\\Sdk\\ndk\\27.0.12077973// 核心AndroidX库
implementation 'androidx.appcompat:appcompat:1.7.0'
implementation 'com.google.android.material:material:1.12.0'
implementation 'androidx.core:core:1.13.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
// 权限处理
implementation 'androidx.activity:activity:1.9.2'
implementation 'androidx.fragment:fragment:1.8.5'
// 通知支持
implementation 'androidx.work:work-runtime:2.9.1'# 确保Android SDK和NDK已安装
# 配置local.properties文件
sdk.dir=C:\\Users\\[用户名]\\AppData\\Local\\Android\\Sdk./gradlew clean./gradlew assembleDebug./gradlew assembleReleaseAircondition/
├── app/ # 主应用模块
│ ├── src/main/
│ │ ├── java/ # Java源码
│ │ │ ├── com/example/chence/Aircondition/
│ │ │ │ ├── Activity/ # 活动类
│ │ │ │ ├── Service/ # 服务类
│ │ │ │ ├── DataUI/ # 数据界面类
│ │ │ │ └── util/ # 工具类
│ │ │ └── android_serialport_api/ # 串口API
│ │ ├── jni/ # JNI原生代码
│ │ │ ├── SerialPort.c # 串口C实现
│ │ │ ├── SerialPort.h # 串口头文件
│ │ │ └── Android.mk # NDK构建文件
│ │ ├── jniLibs/ # 预编译的.so库
│ │ └── res/ # 资源文件
│ └── build.gradle # 应用构建配置
├── controllib/ # 控制库模块
│ ├── src/main/java/kiyun/
│ │ ├── controllib/ # 控制组件
│ │ └── dataprocess/ # 数据处理
│ └── build.gradle # 库构建配置
└── build.gradle # 项目构建配置
帧头: 0xAA 0x55 [长度] 0xFB
数据: [空调控制数据]
帧尾: 0xAA 0x55
- 帧头: 4字节(0xAA, 0x55, 长度, 0xFB)
- 数据长度: 可变(由第3字节指定)
- 数据内容: 空调状态和控制信息
- 帧尾: 2字节(0xAA, 0x55)
// 数据解析顺序(从第4字节开始):
- 开关状态 (1字节)
- 制冷/制热模式 (1字节)
- 功能数据 (1字节)
- 设定温度 (1字节)
- 当前温度 (4字节,IEEE 754浮点)
- 压缩机运行状态 (1字节)
- 风扇运行状态 (1字节)
- 覆盖数据 (1字节)应用支持通过配置文件动态修改串口设备:
- 配置文件位置:
/sdcard/DCIM/SerialPortDev.txt - 默认设备:
/dev/ttyS3 - 如果配置文件不存在,会自动创建默认配置
- 需要root权限来修改串口设备权限
- 使用
chmod 666设置设备读写权限 - 支持Android 14的新权限模型
adb install app-debug.apk- 确保设备已root
- 应用会自动尝试设置串口设备权限
- 如需要,可手动设置:
chmod 666 /dev/ttyS3
- 在SD卡DCIM目录下创建
SerialPortDev.txt文件 - 写入串口设备路径,如:
/dev/ttyS3 - 重启应用
- 应用版本: 1.0
- 目标Android版本: 14 (API 34)
- 最低Android版本: 5.0 (API 21)
- 编译时间: 2025年10月20日
- APK大小: 约6.87MB
-
串口设备无法打开
- 检查设备路径是否正确
- 确认设备权限设置
- 验证设备是否被其他进程占用
-
编译错误
- 检查Android SDK和NDK版本
- 确认Java版本为17
- 清理项目后重新编译
-
运行时崩溃
- 检查Android版本兼容性
- 确认权限配置正确
- 查看logcat日志
- ✅ 从Android 6.0成功移植到Android 14
- ✅ 迁移Android Support库到AndroidX
- ✅ 更新所有依赖库到最新版本
- ✅ 修复编译错误和兼容性问题
- ✅ 更新权限配置以符合Android 14要求
- ✅ 修改串口设备路径为
/dev/ttyS3
注意: 本应用专为嵌入式Android设备设计,需要串口硬件支持。在普通Android手机上可能无法正常运行。