kunyashaw博客主页 关注kunyashaw新博客 关于kunyashaw 转到底部

11、智石使用记录

用了两天的时间,把这个称为智石的蓝牙模块熟悉了一下,现在整理一下。

智石,英文名为brightBeacon,看字面意思,和apple的13年推出的iBeacon协议有点关系,事实确实如此。

一、智石的特点如下:

1、遵循iBeacon协议。

遵循iBeacon协议的设备工作方式是:配备有 低功耗蓝牙(BLE)通信功能的设备使用BLE技术向周围发送自己特有的ID,接收到该ID的应用软件会根据该ID采取一些行动。比如,在店铺里设置iBeacon通信模块的话,便可让iPhone和iPad(现在android4.3以上且支持BLE的终端设备也支持Beacon协议)上运行一资讯告知服务器,或者由服务器向顾客发送折扣券及进店积分。此外,还可以在家电发生故障或停止工作时使用iBeacon向应用软件发送资讯。(摘自百度百科)

大白话就是遵循iBeacon协议的蓝牙模块,会一直向外广播,智能设备靠近蓝牙模块的时候,通过商户支持的app来判断靠近的具体是哪个蓝牙模块(通过id来区分),然后app读取服务器中该id对应的相关数据,显示在app中。

2、1颗纽扣电池,官方宣传可续航1-2年,实际使用估计在6个月左右

3、智石官方的资料:

①sdk地址:https://github.com/BrightBeacon/BrightBeacon_Android_SDK(api文档、sdk)

②demo代码讲解:http://www.brtbeacon.com/home/docuemt_andriod.shtml(sdk中得demo的关键代码讲解)

③demo地址:http://www.brtbeacon.com/home/sdkdownload.shtml(官方做的一些体验demo,很烂)

 

二、智石开发中大致流程

1、扫描附近的支持IBeacon设备

//设置扫描的回调函数

beaconManager.setRangingListener(new RangingListener() {
@Override
public void onBeaconsDiscovered(RangingResult rangingResult) {
//rangingResult.beacons为扫描到的Beacon集合;
//rangingResult.sortBeacons为根据感应距离排序后的Beacon集合

}

});

//开始扫描

beaconManager.startRanging(ALL_BRIGHT_BEACONS);

 

2、选择一个并连接IBeacon

//连接的回调函数

connection = new BRTBeaconConnection(splash.this,beacon, createConnectionCallback());

//开始连接

connection.connect();

 

3、连接后可以进行设备信息(名称、发射功率等)的读写

在上一步中的回调函数中:

private com.brtbeacon.sdk.connection.ConnectionCallback createConnectionCallback() {

CommonUtils.LogWuwei(tag, "开始连接。。。");

return new ConnectionCallback() {

@Override
public void onAuthenticated(final BeaconCharacteristics beaconChars)
{
CommonUtils.LogWuwei(tag, "连接成功");
StringBuilder sb = new StringBuilder()

.append("1、电量: ").append(beaconChars.getBattery()).append("%\n").

append("2、名称").append(beaconChars.getName()).append("%\n")

.append("3、温度:".append(beaconChars.getTemperature()).append("℃").append("%\n")

.append("4、固件版本: ").append(beaconChars.getVersion()).append("\n");
}

@Override
public void onAuthenticationError() 
{
CommonUtils.LogWuwei(tag, "连接失败");
}

@Override
public void onDisconnected() 
{
CommonUtils.LogWuwei(tag, "连接断开");
CommonUtils.showToast(getApplicationContext(), "状态: 连接断开");
}

};
}

 

4、发现进入或者离开区域的回调

 

//设置扫描回调

 

beaconManager.setMonitoringListener(new MonitoringListener() {

 

@Override
public void onEnteredRegion(BRTRegion arg0, List<BRTBeacon> arg1) {

//进入感应区域

}

 

@Override
public void onExitedRegion(BRTRegion arg0, List<BRTBeacon> arg1) {
//离开感应区域
}
});

 

//开始监控感应情况

region = new BRTRegion("rid", beacon.getProximityUUID(),  beacon.getMacAddress(), beacon.getMajor(), beacon.getMinor());

beaconManager.startMonitoring(region);

 

三、问题

1、感应的时候不太灵敏。官方说是空旷地区50米,稳定工作20米,但是如果两个蓝牙模块隔5米,这样去做判断的时候,没有去验证

2、连接后更改设备名称,保存后,再次连接名称没有更改回来,官方demo也是如此,具体没有验证

 

自己写的测试工程详见附件

beaconTest.zip 

测试工程功能:1、可以搜索到附近支持IBeacon的蓝牙模块 2、可以连接  3、读取设备信息   4、感应进入和离开区域

 

That's all。

posted @ 2015-02-10 20:02  kunyashaw  阅读(890)  评论(0编辑  收藏  举报
回到顶部