第一个安卓APP

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
2
3
4
5
6
7
8
9
10
11
12
13
eg:
'f','0x00','0x07','0x01','0x05','p','v'
则表示:
第 1 个摇杆返回的数据,其:
'distance' = '0x00' //distance为摇杆距离圆心的距离(暂不支持)
'value' = '0x0105' //value为摇杆角度,拆分为低八位和高八位进行传输

eg:
'f','0x01','0x10','0x00','0xf5','p','v'
则表示:
第 2 个摇杆返回的数据,其:
'distance' = '0x10' //distance为摇杆距离圆心的距离(暂不支持)
'value' = '0x00f5' //value为摇杆角度,拆分为低八位和高八位进行传输

distance特性暂不支持

Slider滑杆

‘f’,’ID:0x1x’,’value’,’p’,’v’

1
2
3
4
5
eg:
'f','0x10','0x55','p','v'
则表示:
第 1 个滑杆返回的数据,其:
'value' = '0x55' //摇杆的有效值为0x55

Button按钮

‘f’,’0x2x’,’value’,’p’,’v’

1
2
3
4
eg:
'f','0x22','0x01','p','v'
则表示:
写着 3 的按钮被按下。(因为按钮上的文字是从1开始的)

接收数据格式

因为数据收到后将直接展示到UI界面,故请回传字符串,并以”\r\n”结尾
好了,就这么多。

解析库文件

咕咕咕,过两天可能顺便更新一下协议再放出。

开源地址

https://github.com/h13-0/fpv-Remote-Control

如何使用

http://www.h13studio.com/fpv图传遥控使用教程/