Android手把手编写儿童手机远程监控App之嘟宝工程建立

0 阅读4分钟

概述

上节讲到Android手把手编写儿童手机远程监控App之MQTT与Coturn详解 孩子使用手机时自控能力较弱,容易沉迷其中。相对比学习的影响,对视力的损害更令人担忧,且往往是不可逆的。借助专业的监控软件,家长可以远程了解孩子使用手机的动态。省却家长电话督促,安心工作。这就是嘟宝创立的初中。 在这里插入图片描述

嘟宝App安装在孩童手机当中,它应有以下功能:

  • 后台常驻存活,实时在线
  • GPS功能,记录当前位置及历史位置
  • 获取前后相机实时视频流,看到孩子周围状况
  • 获取手机实时音频流,听到还在周围的声音
  • 获取手机的画面,看到孩子玩什么
  • 统计孩子手机使用状况

嘟宝需求分析

后台常驻

在 Android 系统中,由于系统对后台进程的限制(尤其是 Android 8.0+),应用在后台运行时容易被系统回收,导致:

  • 核心功能中断
  • 数据采集中断
  • 实时任务无法完成 因此嘟宝App需要实现后台长期稳定运行机制,需要做到以下内容:
  • 前台服务(Foreground Service),通过前台服务提升进程优先级,降低被系统杀死概率
  • 自启动(开机启动)
  • 任务调度机制,通过系统调度保证任务执行
  • 双进程守护,A/B 进程互相拉起 在这里插入图片描述

MQTT长期连接

在满足后台常驻存活后,与嘟宝服务器建立长期连接,满足实时在线功能。可使用MQTT协议与中心服务器建立通信。MQTT 是一种专门为低带宽、不稳定网络、物联网场景设计的轻量级消息协议。

  • 低功耗,数据包小,长连接减少通信次数,可控制发送频率
  • 心跳包非常小(开销极低)
  • 支持断线重连 在这里插入图片描述

WebRtc音视频通话

WebRTC 是一个专门用于浏览器 、手机App音视频实时通信的技术栈,在性能和实时性方面非常强。它拥有以下特点:

  • 超低延迟(核心优势)
  • 点对点通信(P2P)
  • 自适应网络能力(弱网优化)
  • 多媒体能力(麦克风、摄像头、桌面画面)
  • 数据通道(DataChannel)
  • 各浏览器、Android、IOS多支持平台 在这里插入图片描述 嘟宝与嘟妈若能建立视频通信,必须依赖于MQTT协议。嘟妈通过MQTT发起信令,建立WebRtc通信。嘟宝收到信令后,与嘟妈交互协商建立WebRtc通信,建立的条件:
  • 协商交互支持的视频编码,h264、vp8、vp9
  • 协商交互分辨率、码率
  • 协商交互音频编码
  • 协商交互双方的网络地址 交互的内容共分成两类: 一是音视频信息,该信息统称为sdp, 二是网络地址信息,该信息统称为ICE 嘟宝与嘟妈若要建立webrtc通信,必须交互这两类信息,而交互的桥梁则是MQTT协议。
[嘟宝]                    [MQTT Server]                    [嘟妈]
    |                              |                                     |
    |-- 1. 创建Offer (SDP) -------->|                                     |
    |                              |-- 2. 转发Offer -------------------->|
    |                              |                                     |
    |                              |<-- 3. 创建Answer (SDP) --------------|
    |<-- 4. 转发Answer ------------|                                     |
    |                              |                                     |
    |-- 5. ICE Candidates (通过STUN/TURN收集) --> 交换ICE候选对等建立连接 --|
    |                              |                                     |
    |<====================== 6. 建立P2P连接 (DTLS/SRTP) =================>|

流程图可理解为:

  • 嘟宝创建SDP,通过MQTT转发给嘟妈
  • 嘟妈收到SDP,创建自己的SDP再通过MQTT发送嘟宝
  • 完成SDP交互,再交互ICE
  • ICE交互完成,建立点对点视频通话

统计手机使用情况

统计孩子手机使用状况,核心意义在于科学管理、保护成长、及时干预,不只是简单 “盯梢”,而是用数据了解孩子使用手机的习惯。对于家庭教育的意义及时发现孩子异常行为,有这重大的帮助。能够监听Android手机的哪些行为? 在这里插入图片描述

  • 获取Android屏幕点亮、熄灭,统计使用时长

  • 统计Android 手机安装的App

  • 统计Android 手机运动轨迹

  • 统计Android 手机最近使用的app

  • 统计一天电池用电量、用电高峰 由于嘟宝后台服务器只安装EMQX、Coturn两种软件,这就使得嘟宝的统计信息,必须存储本地。Android 本地存储,可分成五大类: 在这里插入图片描述

  • SharedPreferences(轻量配置)

  • 文件存储(File)

  • 数据库(SQLite / Room)

  • MMKV(高性能键值存储)

  • ContentProvider(跨应用共享)

| 方式               | 类型     | 性能     | 适合场景  |
| SharedPreferences | KV       | ⭐⭐    | 配置    |
| File              | 文件      | ⭐⭐⭐   | 缓存/日志 |
| SQLite            | 数据库    | ⭐⭐⭐⭐  | 结构化数据 |
| Room              | ORM数据库 | ⭐⭐⭐⭐⭐ | 大型项目  |
| MMKV              | KV        | ⭐⭐⭐⭐⭐ | 高频存储  |

嘟宝选择SQLite是最佳选择。其中SQLite是结构化数据,是一种轻量级嵌入式关系型数据库,广泛应用在移动端(尤其是 Android)、桌面应用以及 IoT 设备中。SQLite核心特点

  • 轻量级,整个数据库就是一个文件(.db),无需安装数据库服务(不像 MySQL)
  • 嵌入式,直接集成在应用中,Android 系统原生内置 SQLite
  • 支持标准SQL,数据增删改查、及事务的支持
  • 零配置,不需要启动服务,用户密码,开箱即用