【TL8266】APP接收蓝牙模块发送过来的消息
前一篇文章讲述了如何向蓝牙模块发送数据,这一篇讲述如何接收数据,点击开关按钮发送AT指令,模块会返回OK
先做一个广播接收器,按Ctrl+F关注mBluetoothLeService的操作
public class BleAtActivity extends Activity implements View.OnClickListener{private BroadcastReceiver mGattUpdateBroadcastReceiver=new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {String action=intent.getAction();if (BluetoothLeService.ACTION_GATT_DISCONNECTED.equals(action)){mBluetoothLeService.connect(mAddressString);}if (BluetoothLeService.ACTION_DATA_AVAILABLE.equals(action)){displayData(intent.getByteArrayExtra(BluetoothLeService.EXTRA_DATA));}}};}
其中接收到的数据是byte[]类型,转换成string类型,以吐司的方式显示出来,核心是对bytes的操作
public class BleAtActivity extends Activity implements View.OnClickListener{private void displayData(byte[] buf) {String s =asciiToString(buf);Toast.makeText(this,s,Toast.LENGTH_SHORT).show();}public String asciiToString(byte[] bytes) {char[] buf = new char[bytes.length];StringBuilder sb = new StringBuilder();for (int i = 0; i < buf.length; i++) {buf[i] = (char) bytes[i];sb.append(buf[i]);}return sb.toString();}}
再做一个过滤器,用于选择与蓝牙有关的广播
public class BleAtActivity extends Activity implements View.OnClickListener{private IntentFilter makeGattUpdateIntentFilter(){IntentFilter intentFilter = new IntentFilter();intentFilter.addAction(BluetoothLeService.ACTION_GATT_CONNECTED);intentFilter.addAction(BluetoothLeService.ACTION_GATT_DISCONNECTED);intentFilter.addAction(BluetoothLeService.ACTION_GATT_SERVICES_DISCOVERED);intentFilter.addAction(BluetoothLeService.ACTION_DATA_AVAILABLE);intentFilter.addAction(BluetoothLeService.ACTION_WRITE_SUCCESSFUL);return intentFilter;}}
注册。上面做了那么多都是为了registerReceiver函数,前面都是初始化,只有这一步是有效操作
public class BleAtActivity extends Activity implements View.OnClickListener{@Overrideprotected void onResume() {super.onResume();registerReceiver(mGattUpdateBroadcastReceiver, makeGattUpdateIntentFilter());if (mBluetoothLeService!=null){mBluetoothLeService.connect(mAddressString);}}@Overrideprotected void onPause() {super.onPause();unregisterReceiver(mGattUpdateBroadcastReceiver);}}
其他部分基本和前一篇没什么区别,其实应该写成一篇,不过考虑到前面一篇那么长,还是分开吧
源码地址
【TL8266】APP接收蓝牙模块发送过来的消息相关推荐
- 【TL8266】向蓝牙模块发送AT指令的APP
前一篇文章写了如何显示BLE设备,在子项点击事件中只弹出了一个吐司提示点击的是哪个模块的地址,这一篇就将它改成发送指令 public class MainActivity extends AppCom ...
- 嵌入式单片机基础篇(二十七)之Stm32F103单片机给蓝牙模块发送AT指令程序
Stm32F103单片机给蓝牙模块发送AT指令程序 #include "stm32f10x.h" #include "string.h" #include &q ...
- Android开发-连接开发板蓝牙模块发送和接收数据
帮同学写一个连接小车蓝牙模块遥控小车的APP,在网上搜阅了很多资料,大概了解了蓝牙的工作原理,再经历了种种BUG后终于是成功连上了小车蓝牙,并可以发送数据,小车可以接收到,测试的蓝牙是Arduino小 ...
- 微信小程序连接蓝牙模块发送数据的详解以及封装版
连接蓝牙 前言 详解 小程序链接蓝牙流程图 需要的数据 api openBluetoothAdapter:打开蓝牙适配器 getBluetoothAdapterState:查看蓝牙适配器状态 star ...
- 蓝牙模块通信c语言,求一个蓝牙模块发送数据的例子
#include #include #define uchar unsigned char #define uint unsigned int /******led定义*******/ sbit le ...
- 【STM32】HC-05蓝牙模块
模块介绍 HC-05是主从一体的蓝牙模块,默认为从机.既支持跟模块通信,也支持跟手机通信.具有两种工作模式:串口透传通信模式和AT指令模式. 在串口透传通信模式下模块又可分为主( Master).从( ...
- Android蓝牙开发与蓝牙模块进行通讯(基于eclipse)
2017.10.20 之前参加一个大三学长的创业项目,做一个智能的车锁App,用到嵌入式等技术,App需要蓝牙.实时位置等技术,故查了几篇相关技术文章,以此参考! //先说说如何开启蓝牙设备和设置可见 ...
- JDY-31蓝牙模块远程控制STM32F103单片机
一,概述 手机app通过蓝牙模块发送指令实时控制单片机的外设功能,比如发送衣柜开关门指令(舵机旋转),衣架上升降落(步进电机正转反转),远程开启去污除湿功能(继电器控制打开\关闭小风扇+加热片). 本 ...
- 卜若的代码笔记-一周搞定树莓派-第二十七章:蓝牙模块
1 这个实验是这样的 板载蓝牙模块,也就是树莓派本身拥有一个蓝牙模块. 然后给你一个外部蓝牙模块HC-05 让你干嘛呢,让你通过外设蓝牙模块发送一条消息给板载蓝牙模块,然后去点亮LED 点亮LED本身 ...
最新文章
- 用JPA在测试的时候无法创建EntityManager Factory无法创建的几个可能因素!
- Xcode代码块功能
- boost::fusion::joint_view用法的测试程序
- mybatis学习(52):扩展结果的展现
- [Leetcode][JAVA][第20题][Stack][Map]
- QQ组件可导致IE10无响应
- Greenplum小把戏 - 你所不知道的时间戳长度玩法
- plsql快捷执行方式_UG编程必备的快捷键,收藏转发!
- 进阶之路:深入解读 Java 堆外内存 | 凌云时刻
- 创建一个基础WDM驱动,并使用MFC调用驱动
- T SNE降维matlab程序,关于t-SNE降维方法
- web前端程序员前景及优劣势分析
- 计算机方面的缩写大全
- 细节复盘3 (文本折叠、文本尾行缩进截断)2020-8-2
- 流量不清零:还在忽悠广大网民?
- C4.5决策树预测销量
- PointNet++理解(PointNet++实现第2步)
- python的urllib.parse用法
- 天虹数科Java笔试题B
- U8860 华为荣耀各种刷机教程