需求:
1项目中有个需求,假设有N个数据,格式为8位纯数字字符串("00015756"),
2需要把N个数据按照尾号0-9分组排好。尾号为“0”的一组,尾号为“1”的一组...最多10组3在每一组之前添加新唤醒数据帧”AAAAAAAA“,在结尾添加新睡眠数据帧“BBBBBBBB”
4按照0-9分好组的顺序,蓝牙把这些数据发送给硬件
5每组中唤醒帧”AAAAAAAA“发完等待11s,(11s内硬件不回复任何内容),后发送数据,
发送完数据后蓝牙会立刻回复,收到数据后立即发送下一条数据(不等待3s超时),
如果超过3秒未回复,就要发送下一个数据。
最后发本组睡眠帧“BBBBBBBBB”,等待3s(3s内硬件不回复任何内容).循环剩下的组
想了很久,这个逻辑是无法用rxjava一行代码写下来的,因为处理的是两个数据流。
(蓝牙发送数据,蓝牙接收数据)
各位宝宝先看看本宝宝最后完美实现的结果
发送唤醒帧后间隔11s发数据,发送睡眠帧后间隔3s发数据,发送数据帧数据间隔3s,
如果收到回复数据直接发下一数据
实现代码贴上:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button button;
Context context;
private ArrayList<String> dataList;
static Subscription subscription;
static Disposable disposable;
static String currentData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = this;
setContentView(R.layout.activity_main);
initView();
generat