2020-08-02:
稍微学习了一下后,发现安卓也没有想象中那么高不可攀23333
2020-08-09更新:
草,难是不难,踩了一堆坑。。
2000行代码写了50+个小时…
APP名字还没想好..
万万没想到我居然是用安卓来学习面向对象编程的…
关联项目:
http://www.h13studio.com/fpv图传遥控使用教程/
项目结构
com.h13studio.fpv
↓ BluetoothAcivity
↓ BluetoothClient
↓ BluetoothRecyclerAdapter
↓ fpvActivity
↓ MainActivity
↓ MsgObject
↓ PingTask
↓ TCPClient
→ UnpairedBluetoothRecyclerAdapter
MainActivity -> 启动Activyty,负责收集图传和遥控的目标地址,以及显示基础UI
BluetoothAcivity -> 由MainActivity启动 负责让用户选择目标蓝牙设备,随后传MAC地址给MainActivity
BluetoothRecyclerAdapter,UnpairedBluetoothRecyclerAdapter -> 分别是已配对蓝牙设备和未配对蓝牙设备的RecyclerView的adapter对象
fpvActivity -> 图传显示和控制界面,由MainActivity启动,负责显示图传信息和控制用控件
MsgObject -> 目标设备的Msg对象,在fpvActivity调用,负责分发消息到TCP Client或Bluetooth Client对象,和绑定回调函数更新fpvActivity的UI界面
BluetoothClient -> 由MsgObject调用,负责连接,接收和发送蓝牙信息
TCPClient -> 由MsgObject调用,负责连接,接收和发送TCP信息
回传数据格式V1.0
因为考虑到要使用蓝牙传输数据,故这里使用二进制数据包传递。
数据包基础格式:
‘固定包头 0x66’,’ID’,’value xn’…,’固定包尾 0x70’,’固定包尾 0x76’
其中 0x66 0x70 0x76 分别为字符 ‘f’ ‘p’ ‘v’的二进制值,即本app包名。
RockerView摇杆
‘f’,’ID:0x0x’,’distance’,’value’,’value’,’p’,’v’
其中 ‘ID:0x0x’ 则表示 ‘0x00’ ‘0x01’ ‘0x02’等 都有可能是摇杆控件的标识字节
1 | eg: |
distance特性暂不支持
Slider滑杆
‘f’,’ID:0x1x’,’value’,’p’,’v’
1 | eg: |
Button按钮
‘f’,’0x2x’,’value’,’p’,’v’
1 | eg: |
接收数据格式
因为数据收到后将直接展示到UI界面,故请回传字符串,并以”\r\n”结尾
好了,就这么多。
解析库文件
咕咕咕,过两天可能顺便更新一下协议再放出。
开源地址
https://github.com/h13-0/fpv-Remote-Control