Articles of 蓝牙低能量

Android BLE GAT特性WRITE_TYPE_NO_RESPONSE不起作用

我开发了一个连接到CC2540 BLE外设的Android应用程序。 当我做特性写入types没有响应(WRITE_TYPE_NO_RESPONSE),我仍然在应用程序级别的callbackonCharacteristicWrite。 这种行为是正确的吗? 我知道Android设备和外围设备之间可能存在低级别的确认。 但我所要求的原因是因为这导致了一个问题,我只能发送一次,我收到了这个callback,这是在应用程序中放慢速度的写一个问题。 任何关于这种行为的亮点将不胜感激。 谢谢,

蓝牙LE扫描filter不工作

我只想在我的Android代码中使用特定的UUID扫描BLE信标。 尽pipe我可以为特定的MAC地址添加filter,但我无法使其与UUID一起工作。 onScanResult函数永远不会被调用。 为什么会这样? 我使用的API 21,我没有得到任何错误的项目。 final String tagUUID = "01122334-4556-6778-899a-abbccddeeff0"; //does not work ScanFilter filter = new ScanFilter.Builder().setServiceUuid(new ParcelUuid(UUID.fromString(tagUUID))).build(); //works ScanFilter filter = new ScanFilter.Builder().setDeviceAddress(tagMAC).build();

检测BLE设备是否可以在Android上连接

我正在开发configuration信标的项目。 开机后一段时间,信标变得不可configuration,直到重新启动。 为了显示可configuration信标列表,我正在查看某些特性(蓝牙设备名称,广告数据包中的某些制造商数据)。 我还需要知道它是否“可连接”,即设备的BLE广播数据包中的PDUtypes是否表示可以连接。 我已经在Android 4.X和5.X上search了Android蓝牙类的高低,并且一直无法find任何可以告诉我这些信息的东西。 我意识到,确定信标可连接性的一种方法是连接到它,例如: device.connectGatt(…) 。 不过,在callbackonConnectionStateChange返回STATE_DISCONNECTED之前,我已经看到它有时需要两分多钟。 而且,在一个环境中可能有许多这样的信标,并且连接到可能可configuration的每一个信标都是低效的。 可以在CBCentralManagerDelegatecallback方法centralManager:didDiscoverPeripheral:advertisementData:RSSI的关键字CBAdvertisementDataIsConnectable下的advertisementData字典中find此属性的iOS等效项。 所以,问题是:Android上有没有一种方法可以确定BLE设备是否可以从广告数据或扫描结果或“…”中“连接”?

在Android中读取广告包

我正在研究制造商特定数据的BLE传感器。 有没有示例代码演示如何在Android中接收广告数据包并分析其有效载荷? 非常感谢您的帮助。

为什么Android BLE扫描时发生“BluetoothAdapter:startLeScan():null”?

我正在为BLE开发Android。 我的BLE设备将播放不同的名称,所以我需要继续重新扫描Android。 我创build一个Runnable来停止并开始扫描,如下所示。 当我调用mHandler.post(monitorDevice); ,它会启动Runnable 。 final Runnable monitorDevice = new Runnable() { @Override public void run() { scanLeDevice(false); scanLeDevice(true); mHandler.postDelayed(this,3000); } }; scanLeDevice的代码如下所示: public void scanLeDevice(final boolean enable) { // TODO Auto-generated method stub if(enable){ mScanning = true; mBluetoothAdapter.startLeScan(mLeScanCallback); }else { mScanning = false; mBluetoothAdapter.stopLeScan(mLeScanCallback); } } 我可以在开始的日志中看到扫描结果。 但约10〜15分钟后,logcat显示如下日志,我看不到任何扫描结果。 startLeScan(): null D/BluetoothLeScanner﹕ onClientRegistered() – […]

采用Android 4.2(Jelly Bean)的设备支持蓝牙低功耗(BLE)

哪个Android(含Jelly Bean,4.2)设备支持蓝牙低功耗 (BLE)? 三星Galaxy S III是否支持它? (这个问题在阅读Galaxy S3上的博客文章蓝牙4.0后出现。)

是否可以使用启用BLE的Android / iPhone作为BLE信标?

我正在研究基于Android的BLE接近感应function,并需要一些信息。 目前我看到有没有安卓的BLE信标制造商。 到目前为止,我发现了2个iPhone。 1) http://www.estimote.com 2) http://www.gimbal.com Estimote声称他们的设备是通用的,但主要是为了iBeacons而公布的。 所以我不确定是否应该在Android上订购它们。 其次万向节明确提到,他们的设备将不会启用接近感应的Android。 所以,如果你们中的任何人知道我可以在哪里订购与Android兼容的BLE信号灯,请告诉我们。 另一件事,对于原型testing,我想知道是否可以使用具有Android BLEfunction的平板电脑或智能手机作为发射BLE信号的灯塔? 到目前为止,Android的文档只是build议如何检测信标,但我不确定Android设备是否可以用作信标。 任何见解?

BluetoothGatt.writeCharacteristic()总是返回false。

我正在编写一个Android应用程序,使用BLE与Arduino进行通话。 我已经能够扫描设备,连接到目标,发现服务,获取特征,并阅读那些可读的。 但是,当我尝试写入可写特性时,该方法始终返回false。 当我debugging到android.bluetooth代码,发生以下序列:特性.getService()。getDevice总是返回null,这导致writeCharacteristic失败。 任何帮助是极大的赞赏!

为什么在Android中将autoConnect设置为true时,App不会重新连接到BLE设备?

我在Android和BLE开发。 我希望应用程序在BLE设备断开连接后自动重新连接到BLE设备 ,但是返回到范围和广告。 我使用下面的代码连接到BLE设备: public void connect(final String address) { // TODO Auto-generated method stub Log.w(TAG, "BluetoothLeService Connect function."); if(mBluetoothAdapter == null || address == null){ Log.w(TAG, "BluetoothAdapter not initialized or unspecified address."); //return false; } final BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address); mBluetoothGatt = device.connectGatt(this, true, mGattCallback); } 我已将AutoConnect设置为true ,但在BLE设备断开连接并重新回到范围内时,它不会重新连接。 为什么在Android中将autoConnect设置为true时,App不会重新连接到BLE设备? 我错过了什么吗? 提前致谢。

连接到BLE设备后如何获得电池电量?

我正在开发一个应用程序,我必须连接到Android 4.3上的蓝牙设备。 我想通过使用Battery_Service和Battery_Level来获取电池电量。 public class BluetoothLeService extends Service { private static final UUID Battery_Service_UUID = UUID.fromString("0000180F-0000-1000-8000-00805f9b34fb"); private static final UUID Battery_Level_UUID = UUID.fromString("00002a19-0000-1000-8000-00805f9b34fb"); public void getbattery() { BluetoothGattService batteryService = mBluetoothGatt.getService(Battery_Service_UUID); if(batteryService == null) { Log.d(TAG, "Battery service not found!"); return; } BluetoothGattCharacteristic batteryLevel = batteryService.getCharacteristic(Battery_Level_UUID); if(batteryLevel == null) { Log.d(TAG, "Battery level not found!"); […]