Android 手机邮政可以通过手机号码 BLE 被扫描 到 吗

Android 手机可以通过 BLE 被扫描到吗? - 知乎35被浏览7871分享邀请回答64 条评论分享收藏感谢收起>> Android BLE TI Sensortag例子程序
Android BLE TI Sensortag例子程序
所属分类:
下载地址:
BleSensorTag-master.zip文件大小:1,009.30 kB
分享有礼! 》
请点击右侧的分享按钮,把本代码分享到各社交媒体。
通过您的分享链接访问Codeforge,每来2个新的IP,您将获得0.1 积分的奖励。
通过您的分享链接,每成功注册一个用户,该用户在Codeforge上所获得的每1个积分,您都将获得0.2 积分的分成奖励。
Android手机和TI SensorTag通过BLE4.0通讯的例子程序。包含蓝牙扫描,服务和特性的应用,对使用BLE蓝牙协议栈有很大帮助。开发CC2540, CC2541等智能穿戴和嵌入式应用可以参考。
Sponsored links
源码文件列表
温馨提示: 点击源码文件名可预览文件内容哦 ^_^
.gitignore263.00 B 06:44
2.58 kB 06:44
BleSensorTag.iml706.00 B 06:44
LICENSE1.06 kB 06:44
2.51 kB 06:44
build.gradle790.00 B 06:44
gradle-wrapper.jar50.14 kB 06:44
gradle-wrapper.properties232.00 B 06:44
gradlew4.96 kB 06:44
2.26 kB 06:44
ic_launcher-web.png38.30 kB 06:44
rajawali.jar589.43 kB 06:44
ic_action_lock_orientaion_off.png846.00 B 06:44
ic_action_lock_orientaion_on.png1,011.00 B 06:44
ic_launcher.png3.32 kB 06:44
ic_action_lock_orientaion_off.png504.00 B 06:44
ic_action_lock_orientaion_on.png598.00 B 06:44
ic_launcher.png2.01 kB 06:44
ic_action_lock_orientaion_off.png1.07 kB 06:44
ic_action_lock_orientaion_on.png1.25 kB 06:44
ic_launcher.png4.88 kB 06:44
ic_action_lock_orientaion_off.png1.60 kB 06:44
ic_action_lock_orientaion_on.png1.90 kB 06:44
ic_launcher.png8.45 kB 06:44
ic_launcher.png11.90 kB 06:44
944.00 B 06:44
493.00 B 06:44
1.51 kB 06:44
1.56 kB 06:44
1.21 kB 06:44
863.00 B 06:44
223.00 B 06:44
1.41 kB 06:44
1.39 kB 06:44
911.00 B 06:44
1.03 kB 06:44
sensortag.obj845.54 kB 06:44
2.76 kB 06:44
604.00 B 06:44
3.46 kB 06:44
5.62 kB 06:44
3.32 kB 06:44
841.00 B 06:44
6.32 kB 06:44
5.02 kB 06:44
2.67 kB 06:44
8.96 kB 06:44
2.30 kB 06:44
3.33 kB 06:44
805.00 B 06:44
3.58 kB 06:44
9.11 kB 06:44
617.00 B 06:44
3.05 kB 06:44
714.00 B 06:44
1.30 kB 06:44
1.55 kB 06:44
1.21 kB 06:44
2.78 kB 06:44
3.51 kB 06:44
12.08 kB 06:44
1.81 kB 06:44
469.00 B 06:44
2.70 kB 06:44
1.66 kB 06:44
4.77 kB 06:44
798.00 B 06:44
694.00 B 06:44
116.00 B 06:44
5.09 kB 06:44
2.41 kB 06:44
5.82 kB 06:44
1.04 kB 06:44
2.16 kB 06:44
1.51 kB 06:44
892.00 B 06:44
373.00 B 06:44
745.00 B 06:44
3.28 kB 06:44
3.44 kB 06:44
1.30 kB 06:44
1.82 kB 06:44
2.58 kB 06:44
252.00 B 06:44
3.33 kB 06:44
173.00 B 06:44
4.35 kB 06:44
1.70 kB 06:44
1.47 kB 06:44
2.67 kB 06:44
1.32 kB 06:44
(提交有效评论获得积分)
评论内容不能少于15个字,不要超出160个字。
BLINDE-MAN是 ti cc2540 和android 4.4.2版本样例吗
林林涛涛这个demo我很喜欢 但是还是遇到很多问题能交个好友知道一下么
评价成功,多谢!
BleSensorTag-master.zip
CodeForge积分(原CF币)全新升级,功能更强大,使用更便捷,不仅可以用来下载海量源代码马上还可兑换精美小礼品了
您的积分不足,优惠套餐快速获取 30 积分
10积分 / ¥100
30积分 / ¥200原价 ¥300 元
100积分 / ¥500原价 ¥1000 元
订单支付完成后,积分将自动加入到您的账号。以下是优惠期的人民币价格,优惠期过后将恢复美元价格。
支付宝支付宝付款
微信钱包微信付款
更多付款方式:、
您本次下载所消耗的积分将转交上传作者。
同一源码,30天内重复下载,只扣除一次积分。
鲁ICP备号-3 runtime:Elapsed:254.837ms - init:0.1;find:0.9;t:0.6;tags:0.2;related:194.3;comment:3.1; 5.8
登录 CodeForge
还没有CodeForge账号?
Switch to the English version?
^_^"呃 ...
Sorry!这位大神很神秘,未开通博客呢,请浏览一下其他的吧后使用快捷导航没有帐号?
积分威望贡献
中级创客, 积分 1150, 距离下一级还需 1350 积分
中级创客, 积分 1150, 距离下一级还需 1350 积分
Android Ble简析
&&&& 浏览:5858
&只看该作者&
本帖最后由 Liu 于
10:38 编辑
& && & 蓝牙BLE设备是目前比较热门的设备。由于BLE有低功耗等特点,被广泛应用到身边的电子产品上。如智能手表、手环、防丢器等各种产品上。最近研究一下android上的ble应用开发。跟大家分享一下相关的内容。
& && & 我的实现使用两台android手机做ble相关的通信,一台机器作为服务端接收发过来的消息,另一台作为客户端发送消息。
& && & 客户端基本流程如下:
ble.png (262.13 KB, 下载次数: 42)
11:52 上传
1.添加蓝牙相关权限
&uses-permission android:name=&android.permission.BLUETOOTH&/&
&uses-permission android:name=&android.permission.BLUETOOTH_ADMIN&/&复制代码2.BLE设备扫描
使用BluetoothAdapter.startLeScan来扫描发现设备,这个方法需要参数BluetoothAdapter.LeScanCallback,所以还需要实现此回调方法,来获取扫描结果。
注意:BLE扫描耗电量比较大,尽可能缩短扫描时间。发现用户所需连接的设备后立即停止扫描
public class DeviceScanActivity extends ListActivity {
& & private BluetoothAdapter mBluetoothA
& & private boolean mS
& & private Handler mH
& & // 10秒后停止寻找.
& & private static final long SCAN_PERIOD = 10000;
& & ...
& & private void scanLeDevice(final boolean enable) {
& && &&&if (enable) {
& && && && &// 经过预定扫描期后停止扫描
& && && && &mHandler.postDelayed(new Runnable() {
& && && && && & @Override
& && && && && & public void run() {
& && && && && && &&&mScanning =
& && && && && && &&&mBluetoothAdapter.stopLeScan(mLeScanCallback);
& && && && && & }
& && && && &}, SCAN_PERIOD);
& && && && &mScanning =
& && && && &mBluetoothAdapter.startLeScan(mLeScanCallback);
& && &&&} else {
& && && && &mScanning =
& && && && &mBluetoothAdapter.stopLeScan(mLeScanCallback);
& && &&&}
& && &&&...
& & }
...
}
复制代码BLE扫描结果的接口,下面是BluetoothAdapter.LeScanCallback的实现。可以获取到扫描到设备的蓝牙名称和蓝牙地址等。
private LeDeviceListAdapter mLeDeviceListA
...
// Device scan callback.
private BluetoothAdapter.LeScanCallback mLeScanCallback =
& & new BluetoothAdapter.LeScanCallback() {
& & @Override
& & public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) {
& && &&&runOnUiThread(new Runnable() {
& & @Override
& & public void run() {
& && && &device.getName();//获得扫描到设备名称
& && && &device.getAddress();//获取设备蓝牙地址
& && &&&}
& &&&});
& &}
};
复制代码3.连接
先获取BluetoothAdapterd,再获取BluetoothDevice。根据扫描的蓝牙设备地址获取BluetoothDevice对象。使用BluetoothDevice.connectGatt进行连接。返回BluetoothGatt实例。
然后使用connectGatt( )方法进行链接。这个方法需要三个参数:一个Context对象,自动连接(boolean值,表示只要BLE设备可用是否自动连接到它),和BluetoothGattCallback调用。后面会详细介绍BluetoothGattCallback的实现。BluetoothManager mBluetoothManager = (BluetoothManager)getSystemService(Context.BLUETOOTH_SERVICE);
BluetoothAdapter mBluetoothAdapter = mBluetoothManager.getAdapter();
BluetoothDevice mDevice = mBluetoothAdapter.getRemoteDevice(address);
复制代码4.发现BLE设备服务
mBluetoothGatt.discoverServices();复制代码5.发送Characteristic
发送消息通过读写Characteristic来完成,app完成与GATT服务端连接和发现services后,就可以读写 writeCharacteristic,每个服务和characteristic都有一个UUID来唯一确定,所有想要开发BLE必须知道你想要用哪个服务的那个characteristic也就是要知道对应的UUID。private void writeCharacteristic(String writeValue) {
& && &&&BluetoothGattCharacteristic characteristic =
& && &&&getCharacteristic(CHARACTERISTIC_UUID);
& && &&&if (characteristic == null)
& && &&&characteristic.setValue(writeValue);
& && &&&mBluetoothGatt.writeCharacteristic(characteristic);
}
private void readCharacteristic() {
& && &&&BluetoothGattCharacteristic characteristic =
& && && &getCharacteristic(CHARACTERISTIC_UUID);
& && &&&if (characteristic != null) mBluetoothGatt.readCharacteristic(characteristic);
}
复制代码6.BluetoothGattCallback实现
根据BluetoothGattCallback判断当前状态。获取是否连接成功、是否断开连接、读写Characteristic是否成功等。
private final BluetoothGattCallback mGattCallbacks = new BluetoothGattCallback() {
& &&&@Override
& &&&//获取连接状态方法,BLE设备连接上或断开时,会调用到此方
& &&&public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
& && && &if (DEBUG) Log.d(TAG, &onConnectionStateChange&);
& && && &if (status == BluetoothGatt.GATT_SUCCESS) {
& && && &if (newState == BluetoothProfile.STATE_CONNECTED) {
& && && && & showMessage(&Bluetooth LE connected&);
& && &&&}
& && &&&else if (status == BluetoothProfile.STATE_DISCONNECTED) {
& && && && & showMessage(&Bluetooth LE disconnected&);
& && && &}
& && &}
& & }
& &
& &&&//成功发现设备的services时,调用此方法
& &&&@Override
& &&&public void onServicesDiscovered(BluetoothGatt gatt, int status) {
& && && &if ((status == BluetoothGatt.GATT_SUCCESS) &&
& && && &(mBluetoothGatt.getService(SERVICE_UUID) != null)) {
& && && && & showMessage(&Discover service Successful !!!&);
& && && &}
& && &}
& & //读写characteristic时会调用到以下方法
& &&&@Override
& &&&public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {
& && && &if ((status == BluetoothGatt.GATT_SUCCESS) &&
& && && && & (characteristic.getUuid().equals(CHARACTERISTIC_UUID))) {
& && && && && &&&showMessage(characteristic.getStringValue(0));
& && && && &}
& &&&}
& &&&@Override
& &&&public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {
& && && & BluetoothGattCharacteristic mCharacteristic =
& && && && & getCharacteristic(CHARACTERISTIC_UUID);
& && && && &if ((status == BluetoothGatt.GATT_SUCCESS) &&
& && && && && & (characteristic.getStringValue(0).equals(mCharacteristic.getStringValue(0)))) {
& && && && && & showMessage(&CharacteristicWrite Successful !!!&);
& && && && &}
& && &&&}
& & };
复制代码7.断开链接
mBluetoothGatt.disconnect();复制代码
以上是客户端(进行消息发送)的实现,下面介绍服务端实现方法。
服务端实现比较简单,首先创建BluetoothManager,使用openGattServer实例mGattServer。openGattServer需要一个BluetoothGattServerCallback回调。创建BluetoothGattService,再把BluetoothGattService添加到BluetoothGattServer中。BluetoothManager&&mBluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
BluetoothGattServer mGattServer = mBluetoothManager.openGattServer(this, mCallbacks);
BluetoothGattService mService = createService();
mGattServer.addService(mService);复制代码BluetoothGattServerCallback回调的实现,在这个回调里面可以获取到服务端发送过来的消息,连接状态等
& && && && && && && && && && & private final BluetoothGattServerCallback mCallbacks = new BluetoothGattServerCallback() {
& & @Override
& & //获取连接状态方法,BLE设备连接上或断开时,会调用到此方
& & public void onConnectionStateChange(BluetoothDevice device, int status, int newState) {
& && &&&if (DEBUG) Log.d(TAG, &onConnectionStateChange: newState=& + newState);
& && &&&if (status == BluetoothGatt.GATT_SUCCESS) {
& && && && &if (newState == BluetoothProfile.STATE_CONNECTED) {
& && && && && & mDevice =
& && && && && & String devicename = device.getName();
& && && && && & String address = device.getAddress();
& && && && && & notifyConnected(devicename);
& && && && && & beginNotification();
& && && && &} else if (status == BluetoothProfile.STATE_DISCONNECTED) {
& && && && && & stopNotification();
& && && && && & notifyDisconnected();
& && && && && & mDevice =
& && && && &}
& && &&&}
& & }
& & //service添加成功会调用此方
& & @Override
& & public void onServiceAdded(int status, BluetoothGattService service) {
& && &&&if (DEBUG) Log.d(TAG, &onServiceAdded()&);
& && &&&if (status == BluetoothGatt.GATT_SUCCESS) notifyServiceAdded();
& & }
& &
& & //读写Characteristic,在此获得客户端发来的消息
& & @Override
& & public void onCharacteristicWriteRequest(BluetoothDevice device, int requestId,BluetoothGattCharacteristic characteristic,
& && &&&boolean preparedWrite, boolean responseNeeded,int offset, byte[] value) {
& && &&&if (DEBUG) Log.d(TAG, &onCharacteristicWriteRequest: preparedWrite=& + preparedWrite);
& && && && &try{
& && && && && & mCharacteristicString = new String(value); //客户端发来的消息
& && && && &}catch(Exception e){
& && && && &}
& && && && &notifyCharacteristicWriteRequest(mCharacteristicString);
& && &&&}
& & }
& &&&@Override
& & public void onCharacteristicReadRequest(BluetoothDevice device, int requestId,
& && &&&int offset, BluetoothGattCharacteristic characteristic) {
& && &&&if (DEBUG) Log.d(TAG, &onCharacteristicReadRequest()&);
& && && && &notifyCharacteristicReadRequest();
& && &&&}
};
复制代码android ble的内容就暂时介绍到这里,上面介绍的实现方法,是有一台android手机来模拟一个BLE的设备。拿到真实的BLE设备(防丢器),还会继续发帖分享给大家,希望大家继续关注!!
再发几张我这个测试应用的操作截图
1.在server端点击Start Server,上面文本提示BLE SERVICE ADDED
1server.png (16.98 KB, 下载次数: 36)
10:22 上传
2.在Client端,输入服务端手机的蓝牙地址,然后点在onnect
1client.png (43.42 KB, 下载次数: 37)
10:26 上传
3.进行配对,两台手机分别点击配对
2.png (84.3 KB, 下载次数: 34)
10:28 上传
4.客户端点击Discover service,Toast提示Discover service Successful。
& & 服务端显示Device Connect。
3.png (64.93 KB, 下载次数: 35)
10:28 上传
5.客户端输入要发送的字符&123456&,点击Write Characteristic。
& &服务端接收到发送过来的字符,显示Device Write:123456
4.png (68.85 KB, 下载次数: 34)
10:28 上传
6.客户端点击Disconnect断开连接
& &服务端显示Device Disconnected
5.png (69.23 KB, 下载次数: 35)
10:28 上传
评分威望 +20
有没有做过android 和IOS之间的BLE连接
积分威望贡献
&只看该作者&
楼主有心整理了,学习了!
Android BLE现在运用挺广泛的,低功耗市场很大,期待楼主有更深入的技术介绍
积分威望贡献
技术小白, 积分 10, 距离下一级还需 190 积分
技术小白, 积分 10, 距离下一级还需 190 积分
&只看该作者&
楼主威武呀!能否分享一下你用的是什么版本的android和机型...
我手里的小米只能当client,作为server无法发现,不知道啥原因了!
积分威望贡献
中级创客, 积分 1150, 距离下一级还需 1350 积分
中级创客, 积分 1150, 距离下一级还需 1350 积分
&只看该作者&
楼主威武呀!能否分享一下你用的是什么版本的android和机型...
我手里的小米只能当client,作为server无法 ...
手机只能模拟成BLE设备,不能做真实的设备来使用。
模拟设备时可能出现扫描不到的情况。可以跳过扫描,直接通过手机的蓝牙地址进行链接使用。
手机是ANDROID4.4。
积分威望贡献
技术小白, 积分 2, 距离下一级还需 198 积分
技术小白, 积分 2, 距离下一级还需 198 积分
&只看该作者&
您好楼主,我在学习BLE,我用的是SONY的 手机,android 系统4.4.2 KitKat,BLE sensortag 在做。
mBluetoothAdapter.startLeScan(mLeScanCallback);
上面的这个方法在API 19已经不能使用了,然而我换用mBluetoothAdapter.startScan(mLeScanCallback);
请帮忙解决一下!谢谢了。
积分威望贡献
技术小白, 积分 8, 距离下一级还需 192 积分
技术小白, 积分 8, 距离下一级还需 192 积分
&只看该作者&
楼主,我这里怎么也链接不上。能分享下代码吗?
Copyright & 2014 Firefly. All Rights Reserved.
产品分销 &: sales@
样板申请 &: apply@
行业定制 &: product@
教育用户 &: education@
联系电话 &: (+86)
综合支持 &: service@
MiniPC (①群) &:
MiniPC (②群) &:
Fireduino (QQ群) &:
友情链接 :BLE的Android上位机开发(上)
各位坛友大家好啊!
上篇BLE的Android开发小技巧(见帖:BLE4.0安卓上位机开发小技巧),但因为当时Android上位机还没有完全开发完毕,BleLib开源包也用的不太熟练,因此没有详细的代码说明。随后就是漫长的出差,天天忙忙碌碌的没时间弄。然而,就在昨天,就在昨天~我的Android上位机全部开发完毕啦~~(真是个举国欢庆的日子啊。。)别的不多扯了,进入主题聊聊Blelib这个包怎么用吧。
1、声明对象
这个太简单,直接码。这个mBleService是核心。
[Java] 纯文本查看复制代码
BleService mBleService=
2、绑定BLELIB服务
这里涉及到两个函数。其中doBindService()是用来绑定BLE服务的,这个在初始化建立蓝牙连接的时候用到;doUnBindService()是用来解绑服务的,在关闭的时候调用。
[Java] 纯文本查看复制代码
01020304050607080910111213
private void doBindService() {Intent serviceIntent = new Intent( this , BleService. class );bindService(serviceIntent, serviceConnection, Context.BIND_AUTO_CREATE);mIsBind=}private void doUnBindService() {if (mIsBind) {unbindService(serviceConnection);mBleService =mIsBind =}}
3、打开蓝牙扫描设备
这个要介绍一位新人了~~~serviceConnection:
[Java] 纯文本查看复制代码
010203040506070809101112131415
private ServiceConnection serviceConnection = new ServiceConnection() {@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {mBleService = ((BleService.LocalBinder) service).getService();if (mBleService != null ) setBleServiceListener();if (mBleService.initialize()) {if (mBleService.enableBluetooth( true )) {mBleService.scanLeDevice( true );Toast.makeText(MainActivity. this , "Bluetooth was opened" , Toast.LENGTH_SHORT).show();}} else {Toast.makeText(MainActivity. this , "not support Bluetooth" , Toast.LENGTH_SHORT).show();}}};
细心的网友肯定发现了,serviceConnection就是doBindService()里面调用的东西,通过重写ServiceConnection()实例化mBleService,并且判断设备是否支持蓝牙,然后开始扫描BLE设备。
观测Android是否还在扫描蓝牙设备,可以用mBleService.isScanning()函数,返回true是仍在扫描,false是扫描完毕。
4、设置各种回调函数
在serviceConnection里面有个调用:setBleServiceListener(); 这个是核心的核心,各种Scan、Connection、Services、Characteristic什么的,重要的信息都在这里。
那么~~抖个包袱,这一部分下次再开帖分享给大家!
感谢大家百忙之中看帖~谢谢大家啦!
helloeeworld为好友,发送职业或EEWORLD论坛账号+感兴趣的方向,经审核通过即会被拉入我们在不用领域建立的微信交流群。
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
今日搜狐热点

我要回帖

更多关于 微博可以通过手机号码 的文章

 

随机推荐