安卓基站锁定手机可以做成iBeacon基站吗

查看: 回复:0
ibeacon基站开发的原理是什么?
您好,精华帖至少要有15张图片,文字不少200个字!并且是原创内容,布局合理。
楼主 电梯直达 楼
  最近ibeacon开始在科技领域中流行,许多APP的所有者都想要在自身的移动应用中融入iBeacon技术,那么这一想法如何来实现?的原理是什么?  首先,iBeacon&是基于当前最新的蓝牙低功耗4.0技术的,可以用它来打造一个信号基站,当用户持有&iOS&设备进入该区域时,就会得到获得该基站的推送信息。  其次,iBeacon&最早推出是在今年的苹果&WWDC&大会上。作为&iOS&7&的一部分,它吸引人的一点是,iBeacon&是一种开发标准——绝大多数智能手机支持蓝牙&4.0(BLE)已经超过&2&年前(苹果从&iPhone&4S&开始)。蓝牙芯片近年来发展迅速,在性能和效率方面都有很大提高,且不断变得更小更便宜。现在,一块纽扣电池就能提供长达&2&年的使用寿命,而且是在设备不断对外发射信号的情况下。  此外,可以利用&iBeacon&分清楚不同的距离概念,比如近(near),适中(medium)和远(far),从而使得&iBeacon&+&蓝牙在目前基于位置的服务中远远好于&GPS&+&WiFi&的组合。另外值得注意的是,iBeacon&+&蓝牙在室内导航(Indoor&Navigation)方面前景光明。  近日,一位叫Tony&Smith的创客用一个Raspberry&Pi和一个蓝牙适配器制作了一个iBeacon基站,它还配备了Linux&Bluetooth软件栈、BlueZ和多种USB开发包。正如之前所说,iBeacon技术是基于低功耗蓝牙开发的,所以它同样可以支持Android&4.3以上的设备。  从目前ibeacon发展的趋势来看,ibeacon的应用能给人们的生活、工作带来颠覆性的改变,让我们期待这一天及早到来吧!
申请精华帖
您的申请已经提交,请耐心等待审核
1、审核通常是1-3个工作日
2、审核结果我们会通过系统消息给您答复
申请精华帖
您已经超过申请限制,不可再申请
您的申请连续三次被驳回,已经无法再申请精华帖,谢谢你对我们的支持!如有疑问,可以
申请精华帖
您有发现精华的慧眼,赞一个!
1、我们会在1-3个工作日内完成审核
申请精华帖
此贴已经申请精华中,谢谢您的支持!
1、我们会在1-3个工作日内完成审核
申请精华帖
您好,该帖子经过审核后,发现内容不符合精华要求,无法申请成为精华,谢谢你的支持!
申请精华帖
抱歉,帖子还没达到精华标准
精华帖至少要有15张图片,文字不少于200个字!您的帖子未达到要求,不能申请精华。
您需要登录后才可以发帖1562人阅读
android基础(56)
最近公司在搞IBeacon,因为公司另一个学android的走了,而剩下的人中,只有我接触过java、android,所以只有我来做这个了。
声明,我是一个C#的程序员,java、android都是弱项,只是略有涉及,不懂、错误之处,多多指教。
一开始,我在网上搜IBeacon的资料(使用百度,唉,看来我还是2B程序员啊),最详细的就只有两个,而这两个都是同一个人的,hellogv,播客地址:http://my.csdn.net/hellogv
我找到的两个博文,
http://blog.csdn.net/hellogv/article/details/
http://blog.csdn.net/hellogv/article/details/
因为一开是没有接触过这个东西,所以看不懂啊。只好把代码下载下来,去实际运行一下。
当然,我先下载的是搜索基站的那个,不然没有基站,我上哪里去通信的???!!!
对了,这个BLE是在android 4.3.1版本及以上才能使用哦。
好了,废话少说。
(1)打开蓝牙
这步不多说什么了。
获取BluetoothManager、BluetoothAdapter
* Initializes a reference to the local Bluetooth adapter.
* @return Return true if the initialization is successful.
public boolean initialize()
// Use this check to determine whether BLE is supported on the device.
Then you can
// selectively disable BLE-related features.
<span style="color:#
if (!mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE))
<span style="color:#
<span style="color:#
Log.e(TAG, &Unable to initialize Bluetooth.&);
<span style="color:#
return false;
<span style="color:#
<span style="color:#
// For API level 18 and above, get a reference to BluetoothAdapter through
<span style="color:#
// BluetoothManager.
<span style="color:#
if (mBluetoothManager == null)
<span style="color:#
<span style="color:#
mBluetoothManager = (BluetoothManager) mContext.getSystemService(Context.BLUETOOTH_SERVICE);
<span style="color:#
if (mBluetoothManager == null)
<span style="color:#
<span style="color:#
Log.e(TAG, &Unable to initialize BluetoothManager.&);
<span style="color:#
return false;
<span style="color:#
<span style="color:#
<span style="color:#
<span style="color:#
mBluetoothAdapter = mBluetoothManager.getAdapter();
<span style="color:#
if (mBluetoothAdapter == null)
<span style="color:#
<span style="color:#
Log.e(TAG, &Unable to obtain a BluetoothAdapter.&);
<span style="color:#
return false;
<span style="color:#
<span style="color:#
<span style="color:#
return true;
<span style="color:#
<span style="color:#
然后打开蓝牙
public boolean OpenBlue()
//开启蓝牙
if (!mBluetoothAdapter.isEnabled())
return mBluetoothAdapter.enable();
return true;
因为我写C#习惯了,vs代码样式就是这样的,所以,嘿嘿,能看就行啦哈
private void scanLeDevice(final boolean enable)
if (enable)//enable =true就是说要开始扫描
// Stops scanning after a pre-defined scan period.
// 下边的代码是为了在 SCAN_PERIOD 后,停止扫描的
// 如果需要不停的扫描,可以注释掉
mHandler.postDelayed(new Runnable()
<span style="color:#
<span style="color:#
public void run()
<span style="color:#
<span style="color:#
mScanning = false;
<span style="color:#
mBluetoothAdapter.stopLeScan(mLeScanCallback);
<span style="color:#
// 这个是重置menu,将 menu中的停止按钮-&扫描按钮
<span style="color:#
invalidateOptionsMenu();
<span style="color:#
<span style="color:#
}, SCAN_PERIOD);
<span style="color:#
<span style="color:#
mScanning = true;//此变量指示扫描是否进行
<span style="color:#
mBluetoothAdapter.startLeScan(mLeScanCallback);//这句就是开始扫描了
<span style="color:#
<span style="color:#
<span style="color:#
<span style="color:#
mScanning = false;
<span style="color:#
mBluetoothAdapter.stopLeScan(mLeScanCallback);//这句就是停止扫描
<span style="color:#
<span style="color:#
// 这个是重置menu,将 menu中的扫描按钮-&停止按钮
<span style="color:#
invalidateOptionsMenu();
<span style="color:#
这里有个变量 &&mLeScanCallback,这个是什么呢?
// Device scan callback.
private BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback()
public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord)
iBeacon iBeacon = fromScanData(device, rssi, scanRecord);<span style="color:#
<span style="color:#
<span style="color:#
通过探索呢,这个东西就是一个回调函数,当蓝牙接收到某广播时,就会调用 mLeScanCallback.onLeScan()函数。device当然就是广播的设备了,rssi是信号强度,scanRecord是广播的信息。
然后通过解析scanRecord就可以知道设备的详情了。formScanData我就不多说了,在大神的源码里有。
获取到IBeacon以后,你就可以把他放到列表里,该怎么显示就是你的问题了。
/sdwdjzhy/p/4521421.html
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:796058次
积分:8070
积分:8070
排名:第2459名
原创:12篇
转载:614篇
评论:58条
官方网站:&
项目演示:&
github地址:&
(8)(1)(1)(6)(54)(36)(41)(5)(7)(10)(7)(3)(3)(3)(5)(2)(10)(5)(3)(4)(3)(4)(5)(20)(5)(9)(4)(9)(42)(42)(48)(4)(16)(52)(95)(59)(2)(1)}

我要回帖

更多关于 聚合基站手机安卓版 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信