- UID
- 430
- 麦力
- 405
- 注册时间
- 2015-12-18
- 最后登录
- 2018-8-12
- 精华
- 1
- 阅读权限
- 100
- 在线时间
- 44 小时
|
之前蓝牙状态一直说os未支持,直到前几天Timex表盘发布时实现了蓝牙状态的功能,其作者diablozhu开源了这个代码。
经他提醒后来发现:
enum BleStatus{
BLE_STATUS_ADVERTISING, // 广播
BLE_STATUS_CONNECTED, // 被连接
BLE_STATUS_USING, // 使用中(发送数据中)
BLE_STATUS_CLOSE // 该状态蓝牙被关闭 (这个在测试中好像无论什么状态总是返回真,不知哪里出了问题。)
};
晚上我也研究一差不多一个通宵了,前期一直没搞定,后来直接使用了diablozhu的部分代码,并作一两句一两句增加代码、安装测试的方式,终于完成了多显表盘的蓝牙状态功能。后来发现蓝牙状态通讯时也是一个状态,参数中有一个断开,但用了断开参数好像决断不准,无论连接状态如何,断开总是true。还有一些函数或参数不支持,有些能编译但安装不了,有些也不能编译。虽然后来也列了一个可用函数列表,但总之现在调试代码还是非常麻烦。
最后使用了以下代码:
- /*蓝牙状态更改*/
- GBitmap bitmap_ble_con;
- GBitmap bitmap_ble_discon;
- GRect frame_ble = {{MWD_BLE_ORIGIN_X, MWD_BLE_ORIGIN_Y}, {MWD_BLE_SIZE_H, MWD_BLE_SIZE_W}};
- res_get_user_bitmap(RES_BITMAP_BLE_CONNECTED, &bitmap_ble_con);
- res_get_user_bitmap(RES_BITMAP_BLE_DISCONNECTED, &bitmap_ble_discon);
- LayerBitmap layer_bitmap_ble_con = { bitmap_ble_con,frame_ble,GAlignCenter };
- LayerBitmap layer_bitmap_ble_discon = { bitmap_ble_discon,frame_ble,GAlignCenter };
- enum BleStatus ble_sta;
- ble_sta = maibu_get_ble_status(); //获取蓝牙状态
- if (ble_sta != BLE_STATUS_CONNECTED && ble_sta != BLE_STATUS_USING) {
- if (g_official_bledis == 0)
- {
- P_Layer layer_ble_new = app_layer_create_bitmap(&layer_bitmap_ble_discon);
- app_layer_set_bg_color(layer_ble_new, GColorBlack);
- g_app_mwd_ble_layer_id = app_window_replace_layer(p_window, p_ble_layer, layer_ble_new);
- app_window_update(p_window);
- g_official_bledis = 1;
- maibu_service_vibes_pulse(VibesPulseTypeShort,1); //调用短振动1次,本想用一次长振动,当时测试无效。
- }
- }
- else if (ble_sta = BLE_STATUS_CONNECTED) {
- if (g_official_bledis == 1)
- {
- P_Layer layer_ble_new = app_layer_create_bitmap(&layer_bitmap_ble_con);
- app_layer_set_bg_color(layer_ble_new, GColorBlack);
- g_app_mwd_ble_layer_id = app_window_replace_layer(p_window, p_ble_layer, layer_ble_new);
- app_window_update(p_window);
- g_official_bledis = 0;
- }
- }
复制代码
|
|