安卓如何缩短手机通过android 蓝牙发送广播播间隔问题

 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
基于安卓手机蓝牙控制的智能小车设计
下载积分:1500
内容提示:基于安卓手机蓝牙控制的智能小车设计
文档格式:PDF|
浏览次数:3|
上传日期: 17:03:39|
文档星级:
全文阅读已结束,如果下载本文需要使用
 1500 积分
下载此文档
该用户还上传了这些文档
基于安卓手机蓝牙控制的智能小车设计
官方公共微信26376人阅读
Android(14)
转载请注明来自:http://blog.csdn.net/icyfox_bupt/article/details/
最近在实验室做项目,使用了Android的蓝牙开发,这里面有好多坑..所以还是希望能记下来这些东西和大家分享,不要再走我的老路了。
先说一下背景,我是开发手机与带蓝牙的智能设备(蓝牙血压计、血糖仪、手环等)设备对接的APP。也就是说,在设备端没有什么可以操作的,手机负责发起数据传输。
蓝牙连接,不需要配对
由于被曾经使用蓝牙的思路所误导,一直以为使用蓝牙是必须一个配对的过程的。实际上不是这样。搜索到设备以后,直接去connect设备而不去配对,目前在我这里是没问题的,搜索到设备以后,可以直接用一下代码进行连接:
final String SPP_UUID = &0-805F9B34FB&;
UUID uuid = UUID.fromString(SPP_UUID);
BluetoothSocket socket;
socket = device.createInsecureRfcommSocketToServiceRecord(uuid);
adapter.cancelDiscovery();
socket.connect();
这里的UUID是比较好用的一个,设备都可以识别。
startDiscovey有可能启动失败
一般程序中会有两步:开启蓝牙、开始寻找设备。之前我写的代码是用户按下按钮就直接顺序执行这两步,导致的结果就是经常性搜索失败。仔细看了一下API,发现adapter.startDiscovery()函数是有一个boolean返回值的,也就是说如果启动失败就返回false。这就解释了为什么会启动失败了:顺序执行了开启蓝牙-寻找设备的步骤,但是由于蓝牙还没有完全打开,就开始寻找设备,导致寻找失败。于是最后我把代码改成了这样,问题解决:
adapter = BluetoothAdapter.getDefaultAdapter();
if (adapter == null)
if (!adapter.isEnabled())
adapter.enable();
adapter.cancelDiscovery();
while (!adapter.startDiscovery()){
Log.e(&BlueTooth&, &尝试失败&);
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
接收数据转换
使用socket.getInputStream接收到的数据是字节流,这样的数据是没法分析的。又由于一般来说厂家给的协议都是类似于&FA
22 89 D0&这样的十六进制数据,所以很多情况需要一个byte转十六进制String的函数:
public static String bytesToHex(byte[] bytes) {
char[] hexChars = new char[bytes.length * 2];
for ( int j = 0; j & bytes. j++ ) {
int v = bytes[j] & 0xFF;
hexChars[j * 2] = hexArray[v &&& 4];
hexChars[j * 2 + 1] = hexArray[v & 0x0F];
return new String(hexChars);}
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:557051次
积分:4093
积分:4093
排名:第7685名
原创:46篇
评论:296条
(1)(1)(2)(1)(2)(4)(1)(3)(1)(2)(2)(3)(3)(1)(1)(1)(2)(2)(2)(1)(1)(2)(1)(1)(6)(1)教你如何通过蓝牙利用另外一个手机上网
经过多次尝试终于搞定了,目前可以用小米使用另外一个不带wifi的ppc上网了!!!
适用于:两个手机,举个例子,我一个小米,一个三星i718,小米常用,但是ppc不常用,而且i718没有wifi,小米流量不够,所以想通过蓝牙利用i718的流量上网。不喜勿喷!
步骤如下,
1·打开ppc的interest共享,pc连接中选择蓝牙pan,连接。
2·连接后和小米配对。
3·配对成功后打开小米设置~蓝牙~点击配对后的蓝牙,~互联网访问。
4·打开小米的uc试试吧!
上UC,有快感!
该帖共收到 25 条回复!
发表于 日 10:16
上UC,有快感!
发表于 日 10:30
内容要用到ppc,我有让两部手机,一部没卡一部有卡,让那没卡的手机利用有卡手机流量上网
可以试试,主要是能不能通过蓝牙传输网络数据&
发表于 日 10:49
上UC,有快感!
发表于 日 10:35
天语可以不 我多个天语待机的动感地带
上UC,有快感!
发表于 日 10:49
RE: 教你如何通过蓝牙利用另外一个手机上网
謫仙无问 发表于 日 10:30
内容要用到ppc,我有让两部手机,一部没卡一部有卡,让那没卡的手机利用有卡手机流量上网
可以试试,主要是能不能通过蓝牙传输网络数据
上UC,有快感!
发表于 日 10:57
干嘛要用蓝牙?
你把一台手机设置为wifi热点,然后另一台手机或其它终端连接这热点不就得了?
上UC,有快感!
发表于 日 11:52
楼上,都说了没wifi。。。
怎么会没wifi?硬件坏了?勾上设置里的usb绑定wlan热点,你的手机就是一wifi信号发射器&
发表于 日 12:01
上UC,有快感!
发表于 日 11:57
我想你反过来,小米通过PPC上网,可以吗
小米通过ppc上网!&
发表于 日 13:50
上UC,有快感!
发表于 日 12:01
m1321059 发表于 日 11:52
楼上,都说了没wifi。。。
怎么会没wifi?硬件坏了?勾上设置里的usb绑定wlan热点,你的手机就是一wifi信号发射器
大哥,是ppc没wifi&
发表于 日 19:00
单方有wifi,你怎么连&
发表于 日 12:03
上UC,有快感!
发表于 日 12:03
RE: 教你如何通过蓝牙利用另外一个手机上网
cheng8313 发表于 日 12:01
怎么会没wifi?硬件坏了?勾上设置里的usb绑定wlan热点,你的手机就是一wifi信号发射器
单方有wifi,你怎么连
上UC,有快感!
发表于 日 13:49
楼上是小白& &请见谅
上UC,有快感!
发表于 日 13:51
感谢分享。。。
上UC,有快感!
发表于 日 14:28
我会告诉内门吗其实蓝牙是最好的选择
蓝牙速度应该不快吧&
发表于 日 14:37
上UC,有快感!
发表于 日 14:31
安卓都可以,何必老说小咪咪
上UC,有快感!
发表于 日 14:37
RE: 教你如何通过蓝牙利用另外一个手机上网
<font color="# 发表于 日 14:28
我会告诉内门吗其实蓝牙是最好的选择
蓝牙速度应该不快吧
和自带的卡差不多,因为两个卡都是2g网速&
发表于 日 13:51
关键是非常省电只要网速要求在200k左右应该没问题&
发表于 日 16:23
上UC,有快感!关于CC2640在广播类型为不可连接时的广播间隔问题 - 蓝牙Bluetooth 技术 - 德州仪器在线技术支持社区
关于CC2640在广播类型为不可连接时的广播间隔问题
发表于1年前
<input type="hidden" id="hGroupID" value="42"
最近项目需要使用不可连接广播来广播一些数据,因为尝试把BLEPeripheral项目中可连接广播修改成不可连接广播,意外发现了一个问题,&/p>
&p>2.0协议栈的工程可连接广播的间隔一定要大于100ms,否则发不出,只有设成主从一体,才能修改广播间隔到蓝牙标准协议的20ms,不可连接广播间隔也不能小于100ms;2.1协议栈BLEPeripheral项目中的可连接广播到是可以设成20ms发送间隔,但是不可连接的广播间隔依然不能小于100ms,请TI人员帮忙看看这个是怎么回事,是不是协议栈RF部分做了类似这方面的限制,有没有办法突破没有,谢谢&/p>&div style=&clear:&>&/div>" />
关于CC2640在广播类型为不可连接时的广播间隔问题
此问题尚无答案
All Replies
最近项目需要使用不可连接广播来广播一些数据,因为尝试把BLEPeripheral项目中可连接广播修改成不可连接广播,意外发现了一个问题,
2.0协议栈的工程可连接广播的间隔一定要大于100ms,否则发不出,只有设成主从一体,才能修改广播间隔到蓝牙标准协议的20ms,不可连接广播间隔也不能小于100ms;2.1协议栈BLEPeripheral项目中的可连接广播到是可以设成20ms发送间隔,但是不可连接的广播间隔依然不能小于100ms,请TI人员帮忙看看这个是怎么回事,是不是协议栈RF部分做了类似这方面的限制,有没有办法突破没有,谢谢
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
再补充一点,蓝牙角色设为广播者时,同样有此广播间隔的限制,特此也说明一下
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
榜眼39505分
硬件上是不会有什么限制的, SDK2.0 和 2.1只是软件上的区别。
建议你尝试一下hci.h 的&HCI_LE_SetAdvParamCmd()来设置广播参数。然后用HCI_LE_SetAdvEnableCmd()使能广播。不要用GAP的那几个接口。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
TI员工,你好,你说的这两个函数,link时提示找不到噢,你能帮忙在开发板试验下,在告诉我具体修改流程吗
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
榜眼39505分
社区会员,
看错了你的诉求。对于non-connectable 的广播包,蓝牙的spec规定必须大于等于100ms。&
要是你有兴趣的话,可以去spec上看一下。
另外,那两个函数目前并没有加到iCall 里面,所以还不能直接调用。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
OK,这个确认了,我后来也去看过spec了,广播者的广播间隔和不可连接的广播间隔的确需要大于100ms.
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
TI 员工您好,看到你以前的帖子,想请教一下,不支持的这两个函数,能够用那两个函数实现这两个函数的功能呢?
You have posted to a forum that requires a moderator to approve posts before they are publicly available.修改蓝牙广播间隔
其实在做这个项目时,一直希望可以降低蓝牙广播的频率已达到低功耗的目的,但是在百度千百回也没有找到一个合适的答案,TI CC254x的群也问了好几次,最后还是无果而终。庆幸今天在论坛发现一点提示,然后试试修改代码,发现果然有用,(虽然之前也看到这个函数,但是一直没有重视)。
// Set advertising interval,在这里修改蓝牙广播的间隔,即多少秒广播一次
uint16 advInt = DEFAULT_ADVERTISING_INTERVAL;
GAP_SetParamValue(TGAP_LIM_DISC_ADV_INT_MIN, advInt);
GAP_SetParamValue(TGAP_LIM_DISC_ADV_INT_MAX, advInt);
GAP_SetParamValue(TGAP_GEN_DISC_ADV_INT_MIN, advInt);
GAP_SetParamValue(TGAP_GEN_DISC_ADV_INT_MAX, advInt);
其中DEFAULT_ADVERTISING_INTERVAL&宏定义了间隔的时间,单位是625us,这里我将广播间隔设置为3秒一次,那么只需将该宏的只修改为4800即可。看起来是一个非常简单的问题,却费了我大量的时间,为此,在这里做个笔记,希望能帮助一些和我一样情况的朋友。
转自:http://blog.csdn.net/wenshifang/article/details/
本文已收录于以下专栏:
相关文章推荐
低功耗蓝牙的发现模式主要分为有限可发现模式和普通可发现模式
转载:http://blog.csdn.net/zzfenglin/article/details/
发现模式 (Discoverable Mode)
低功耗蓝牙的发现...
AI时代,机器学习该如何入门?
对于机器学习,很多人的观点是:机器学习技术是今后所有技术人员都绕不过的一个门槛。 那么,普通程序员该学习机器学作为一名对机器学习心有向往的程序员,我该以什么样的姿势开始呢?
&#160; &#160;设置广播间隔,已达到一个功耗最佳的状态
&#160; &#160;广播间隔,指每次蓝牙广播之间的间隔,间隔越大功耗越低,间隔越小功耗越大
协议栈版本:SDK...
其实在做这个项目时,一直希望可以降低蓝牙广播的频率已达到低功耗的目的,但是在百度千百回也没有找到一个合适的答案,TI CC254x的群也问了好几次,最后还是无果而终。庆幸今天在http://www.d...
// Set advertising interval,在这里修改蓝牙广播的间隔,即多少秒广播一次
uint16 advInt = DEFAULT_ADVERTISING...
读取设备的 MAC 地址:
view plaincopy
GAPRole_GetParameter(GAPROLE_BD_ADDR,&#160;ownAddress);&#160;&#160;...
声明,本文转载自“甜甜的大香瓜”的博客,原文地址如下:
http://blog.csdn.net/feilusia/article/details/
他的最新文章
讲师:宋宝华
讲师:任铄
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 android 蓝牙发送广播 的文章

 

随机推荐