# 智能物联安卓端 **Repository Path**: Limo_JIE/intelligent-iot-android ## Basic Information - **Project Name**: 智能物联安卓端 - **Description**: 安卓端精美前端界面,控制功能未能实现,作为网页端的手机版应用 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-17 - **Last Updated**: 2026-04-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 安卓传感器数据监控应用 ## 一、项目概述 本项目是一个基于 Android 平台的传感器数据监控应用,通过 MQTT 协议与服务器进行通信,实时接收并展示传感器数据,如温度、湿度、光照、电流、电压和功率等。用户可以通过点击刷新按钮向服务器发送刷新命令,获取最新的传感器数据。 ## 二、功能特性 1. **MQTT 通信**:使用 MQTT 协议与服务器进行连接,实现消息的订阅和发布。 2. **数据展示**:在界面上实时展示传感器数据,并根据预设的阈值显示数据状态(正常、偏高、偏低)。 3. **刷新功能**:提供刷新按钮,用户可以手动发送刷新命令,获取最新的传感器数据。 4. **连接状态显示**:实时显示 MQTT 连接状态,方便用户了解连接情况。 ## 三、项目结构 ### 1. 布局文件 - `activity_main.xml`:主界面布局,包含数据滚动区域和连接状态与刷新按钮容器。 - `item_metric_card.xml`:传感器数据卡片布局,用于展示各个传感器的数据和状态。 ### 2. Java 代码文件 - `MainActivity.java`:主活动类,负责初始化界面组件、检查权限、初始化 MQTT 客户端、处理消息接收和刷新命令发送等逻辑。 - `MqttPublisher.java`:MQTT 客户端封装类,提供 MQTT 连接、消息接收和发布功能。 ### 3. 其他文件 - `button_selector.xml`:刷新按钮的背景选择器,定义按钮按下和正常状态的背景样式。 ## 四、构建步骤 ### 1. 环境准备 - 安装 Android Studio:确保你已经安装了最新版本的 Android Studio,并且配置好了 Android SDK。 - 配置 Java 开发环境:确保你已经安装了 Java Development Kit (JDK),并配置好了环境变量。 ### 2. 导入项目 - 打开 Android Studio,选择 `File` -> `Open`,然后选择项目所在的文件夹,导入项目。 ### 3. 配置 MQTT 信息 在 `MainActivity.java` 文件中,找到 `initMQTTClient` 方法,修改 MQTT 服务器地址、客户端 ID、用户名和密码: ```java publisher = new MqttPublisher( "tcp://broker.emqx.io:1883", // MQTT 服务器地址 "fhasohasfsfsdsdfas", // 客户端 ID 0, "your_username", // 替换为实际 MQTT 用户名 "your_password"); // 替换为实际 MQTT 密码 ``` ### 4. 运行项目 - 连接 Android 设备或启动 Android 模拟器。 - 点击 Android Studio 工具栏中的 `Run` 按钮,选择要运行的设备,即可启动应用。 ## 五、使用说明 ### 1. 启动应用 应用启动后,会自动检查网络权限。如果权限被授予,应用将尝试连接到 MQTT 服务器。 ### 2. 查看连接状态 在应用底部可以看到 MQTT 连接状态,显示为“未连接”、“已连接”或“已断开”。 ### 3. 查看传感器数据 连接成功后,应用会订阅指定的 MQTT 主题,接收传感器数据并在界面上展示。每个传感器数据卡片包含数据值和状态信息,状态信息根据预设的阈值显示为“正常”、“偏高”或“偏低”。 ### 4. 刷新数据 点击界面底部的“刷新”按钮,应用会向服务器发送刷新命令,获取最新的传感器数据。 ## 六、注意事项 - **权限问题**:应用需要网络权限才能连接到 MQTT 服务器。如果权限被拒绝,应用将无法正常工作。 - **MQTT 配置**:确保 MQTT 服务器地址、客户端 ID、用户名和密码配置正确,否则无法建立连接。 - **数据格式**:应用假设接收到的 MQTT 消息为 JSON 格式,并且包含 `power` 和 `env` 子对象。如果数据格式不符合要求,可能会导致解析错误。 ## 七、未来改进方向 - **增加更多传感器支持**:可以扩展应用,支持更多类型的传感器数据展示。 - **数据历史记录**:添加数据历史记录功能,让用户可以查看过去一段时间内的传感器数据。 - **报警功能**:当传感器数据超出预设阈值时,提供报警功能,如声音提示或推送通知。 ### 八、嵌入式设备端模拟说明 如果您想要模拟嵌入式设备端的数据发送,可访问 [https://gitee.com/Limo_JIE/smart-device-simulation](https://gitee.com/Limo_JIE/smart-device-simulation) 获取对应的 Python 模拟代码。以下是一些关于该模拟代码的可能情况推测及使用补充说明: #### 1. 模拟代码功能推测 嵌入式设备端的 Python 模拟代码主要用于模拟传感器数据的采集,并通过 MQTT 协议将数据发送到服务器,以便本 Android 应用可以接收并展示。代码可能会按照一定的时间间隔生成模拟的温度、湿度、光照、电流、电压和功率等数据,然后将这些数据以 JSON 格式发送到指定的 MQTT 主题。 #### 2. 使用前准备 - **安装依赖库**:模拟代码可能会依赖一些 Python 库,如 `paho-mqtt` 用于 MQTT 通信,`random` 用于生成随机模拟数据等。您需要确保这些库已经安装,可以使用以下命令进行安装: ```bash pip install paho-mqtt ``` - **配置 MQTT 信息**:与 Android 应用类似,模拟代码也需要配置 MQTT 服务器地址、客户端 ID、用户名和密码,确保与 Android 应用使用的是同一个 MQTT 服务器和主题。 #### 3. 运行模拟代码 将代码下载到本地后,在终端中进入代码所在的目录,然后运行 Python 脚本: ```bash python your_script_name.py ``` 运行后,模拟代码将开始工作,按照预设的时间间隔生成并发送传感器数据到 MQTT 服务器。此时,您可以打开 Android 应用,查看接收到的模拟传感器数据。 ### 九、贡献与反馈 如果您在使用过程中发现了问题,或者有任何改进建议,欢迎通过以下方式进行反馈: - 在项目的代码仓库中提交 issue,详细描述问题或建议。 - 如果您有能力修复问题或实现新功能,欢迎提交 pull request。 通过大家的共同努力,我们可以不断完善这个项目,使其更加稳定和强大。