Articles of bluetooth lowenergy

Android 4.4.4 Moto G蓝牙LE重新连接问题

我有一个应用程序,在运行Android 4.3的三星S3上效果很好,但是我在运行4.4.4的Moto G上遇到了问题 我的BLE外围设备在应用程序使用期间连接和断开多次。 这工作正常,但有时有一个点,应用程序/手机不再重新连接到外设。 所有的gatt命令都在主线程上运行,例如。 final BluetoothGatt gat = gatt; Handler handler = new Handler(Looper.getMainLooper()); handler.post(new Runnable() { @Override public void run() { // This code will be executed on the main thread if (Looper.myLooper() == Looper.getMainLooper()) { Log.e(TAG, "mGattCallback disconnect2: NOW ON MAIN THREAD :)"); } gat.disconnect(); } }); 和外设断开罚款。 当发生这种情况,我不能重新连接到外设了,我得到这样的日志负载: 04-07 16:57:56.798: […]

Android蓝牙接受()/连接()与已配对的设备

我无法通过蓝牙连接两个Android设备,只有在配对之前才会发生这种情况。 我正在运行一个作为服务器,另一个作为客户端。 这里是服务器端的一系列事情: 检查各种蓝牙状态(适配器可用,已启用等)。 使用我select的预定义的UUID调用listenUsingRfcommWithServiceRecord()。 请求使设备可发现 由于可被发现asynchronous发生,我调用accept()并等待传入​​的连接。 在客户端: 检查各种蓝牙状态(适配器可用,已启用等)。 对于getBondedDevices()中的每个设备,我将getName()与服务器名称进行比较。 如果有匹配,请跳到步骤6。 开始BT发现 对于每个发现的设备(请注意,来自2a的配对设备不会在此显示),请将设备名称与服务器名称进行比较。 如果有匹配,请转到步骤6。 取消发现 在步骤2中find的设备上,使用与服务器端使用的相同的预定义UUID调用createRfcommSocketToServiceRecord()。 调用connect()并等待它返回一个连接的套接字。 当客户端和服务器从未配对过时,上述过程对我来说工作得非常好。 但是,在Android注册到设备列表后,它们将不可避免地在connect()/ accept()阶段超时。 我一直在寻找一个解决scheme几天,并尝试了很多东西,包括这一个: 连接到已经配对的蓝牙设备 reflection方法也不适用于我。 看起来connect()会立即返回,但是当我尝试getOutputStream()时,我得到一个exception。 在accept()方面,它甚至不logging有人试图连接。 我认真地需要一些帮助或指示,让设备build立连接,一旦他们以前配对。 这里是关于设备的一些信息: 我正在testing两台LG G2X手机上的服务器和客户端。 他们两个都运行在Android 2.3.3上,对应于API级别10。 再次,上述工作后我手动解除设备设置。 提前谢谢你。 我在Android和蓝牙上大概有两个星期的时间,所以如果你看到任何缺失的步骤或最佳做法,请将它们指出来。

Android BLE近距离通知

我一直在开发一个与BLE设备交互的应用程序。 一切都很好,我可以扫描,连接和使用服务。 我一直在阅读所有的文档,我没有看到任何让开发者select收听BLE设备的选项。 基本上我想在设备进入BLE设备的范围时触发广播接收机。 我知道我可以不断地扫描这个,但电池使用太高,我希望这个被调用,即使当我的应用程序不被使用。 这个function是不支持的还是我错过了讨论这个文档的一部分?

在Nexus 4上使用Android 4.3进行低功耗蓝牙服务发现

我试图用我的nexus 4(android 4.3)使用BLE模块(bluegiga BLE112)。 我可以连接,获取设备的名称,连接到GATT,但服务发现失败。 以下是如何做最初的gatt连接(似乎成功工作: dev.connectGatt(getBaseContext(), true, btGattCB); 这是GATTcallback: private BluetoothGattCallback btGattCB = new BluetoothGattCallback() { @Override public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) { super.onConnectionStateChange(gatt, status, newState); if(newState == BluetoothProfile.STATE_CONNECTED){ Log.i(TAG, "Gatt Connected"); gatt.discoverServices(); } else if(newState == BluetoothProfile.STATE_DISCONNECTED){ Log.i(TAG, "Gatt Disconnected"); } } @Override public void onServicesDiscovered(BluetoothGatt gatt, int status){ Log.i(TAG,"Status […]

让三星Android设备作为iBeacon做广告

有没有人使用三星的蓝牙LE API作为一个iBeacon三星Android设备做广告? 这应该是可能的,但我没有访问设备来尝试它。 如果有人用三星Android设备作为任何其他蓝牙LE外设做广告,我也想知道。 编辑:这是现在Android L上可能。请参阅这里。

如何在Android 4.X中使用Broadcom BLE SDK(SMART 4.0)

我正在尝试为Android开发一个BLE蓝牙(SMART)应用程序。 我设法下载Broadcom BLE SDK ,按照网站上的说明通过Android SDK Manager进行安装,并下载项目示例 。 当我试图将其中一个例子推入我的testing手机(HTC One S,带有蓝牙BLEfunction的HTC One X)时,我遇到了以下问题: INSTALL_FAILED_MISSING_SHARED_LIBRARY 是否有可能包含AndroidManifest.xml文件中描述的broadcom库? <uses-library android:name="com.broadcom.bt.le" android:required="true"/> 有人设法testingbroadcom项目的例子吗? 并在哪个电话? 根据这篇文章 ,在三星Galaxy S3上发现了一个bug,但是我没有find关于HTC产品的任何信息。 更新:真是个好消息! 最新Android版本4.3(Jelly Bean)现在支持低能量的蓝牙智能配件。 http://www.android.com/about/jelly-bean/ https://developer.bluetooth.org/Pages/Bluetooth-Android-Developers.aspx 不知道每个手机都会有更新(例如最后一个HTC One M7),但下一个手机肯定会embedded这个主要版本。

自定义服务UUID的Android 5.0和BLE广告

问题 我目前只有一个5.0手机来testing这个(Moto E2 3G 5.0的棒棒糖),但我不能在Android 5.0上宣传自定义UUID。 当我说一个自定义的UUID,我的意思是不是由蓝牙LE规范预定义的。 在我的Nexus 6 Android 5.1上,一切正常。 码 AdvertiseData.Builder dataBuilder = new AdvertiseData.Builder(); AdvertiseSettings.Builder settingsBuilder = new AdvertiseSettings.Builder(); // Advertising this spec assigned UUID works //ParcelUuid temp = new ParcelUuid(UUID.fromString("0000180D-0000-1000-8000-00805f9b34fb")); // Advertising this custom UUID doesn't work!! ParcelUuid temp = new ParcelUuid(UUID.fromString("02FD04F4-CFFF-4573-B478-F7470A7CF2F2")); dataBuilder.addServiceUuid(temp); settingsBuilder.setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_BALANCED); settingsBuilder.setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_HIGH); settingsBuilder.setConnectable(true); AdvertiseData ad = dataBuilder.build(); bluetoothLeAdvertiser.startAdvertising(settingsBuilder.build(), […]

Android BLE问题:用于后台连接的不受支持的传输

我正在与BLE设备一起工作:首先发现它,然后尝试连接。 但是我得到的错误: 10-03 17:17:45.641 3854-3930/? E/bt-att﹕ Unsupported transport for background connection 10-03 17:17:45.641 3854-3930/? E/bt-btif﹕ bta_gattc_init_bk_conn failed 和我无法连接(注意奇怪的状态133之前断开连接( 0 )): 10-03 17:17:45.641 17474-18298/com.icrealtime.allie D/BluetoothGatt﹕ onClientConnectionState() – status=133 clientIf=7 device=08:00:00:3F:B5:F1 完整日志: 10-03 17:17:45.601 1029-1029/? D/STATUSBAR-WifiQuickSettingButton﹕ onWifiSignalChanged enabled=true enabledDesc:"IC" 10-03 17:17:45.611 17474-17474/com.icrealtime.allie D/BleRpcConnectionFactory﹕ Device found: name=Allie-RA222222222, mac_address=08:00:00:3F:B5:F1, other=08:00:00:3F:B5:F1 10-03 17:17:45.621 17474-17474/com.icrealtime.allie D/BleRpcConnectionFactory﹕ Found and accepted BLE device: […]

如何以编程方式清除使用GattServer的蓝牙caching

我对BLE略微熟悉,而且我正面临一些inheritance代码的问题。 所以这个应用程序是这样的: 启用BLE后,应用程序将扫描设备 该应用程序显示find的设备 用户select要配对的设备 应用程序与设备配对 我面对的问题是,经过几次配对(它变化)手机无法发现设备,因此阻止用户配对。 我正在使用GattServer来连接客户端设备,我正在重新设置服务如下: public void resetBluetoothGattServer() { Log.i(TAG," resetBluetoothGattServer: bluetoothGattServer: "+ bluetoothGattServer); if (bluetoothGattServer != null) { if(!bluetoothGattServer.getServices().isEmpty()){ Log.i(TAG," resetBluetoothGattServer: clearing services on bluetooth Gatt Server"); bluetoothGattServer.clearServices(); } Log.i(TAG," resetBluetoothGattServer: closing bluetoothGattServer"); bluetoothGattServer.close(); } bluetoothGattServer = openGattServer(); } 重新启动手机,closures蓝牙,然后重新打开,卸载并安装应用程序将无法解决问题。 唯一的解决scheme是清除Android应用程序pipe理器上的蓝牙共享应用程序的caching。 这篇文章如何以编程方式强制在Android上的蓝牙低功耗服务发现,而不使用caching地址到类似的问题,但由于我们没有使用蓝牙连接它不是一个合适的解决scheme。 也不会重构整个inheritance的代码。 我问你是否有一种方法来清除使用BluetoothGattServer编程的caching。

蓝牙LE扫描有时不会查找设备

我正在扫描蓝牙LE设备并作为外围设备(在Moto G 2nd Gen上运行Android 6.0) 我遇到的问题是,有时(随机看起来,但经常),它不会find我的任何其他外围设备,其他时间工作正常。 我有一个运行相似代码的伴侣iOS设备(既可以扫描外围设备,也可以作为外设),当Android扫描找不到iOS设备时,我的iOS会发现Android设备充当外设。 所以似乎只是在事物的扫描方面存在问题。 这不仅仅是找不到我的伴侣iOS设备,而是没有find任何蓝牙设备。 当它工作,它发现我的伴侣iOS设备以及一堆其他设备。 我曾尝试过,没有ScanFilters,并得到同样的问题。 我正在build立一个最低SDK为23的SDK 26。 我正在设置所需的权限,因为它有时会起作用。 相关代码如下: private void startScanning() { mHandler = new Handler(mContext.getMainLooper()); mHandler.postDelayed(new Runnable() { @Override public void run() { ScanSettings settings = new ScanSettings.Builder() .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY) .setReportDelay(0) .build(); mBluetoothLeScanner.startScan(null, settings, mScanCallback); } }, 1000); } private ScanCallback mScanCallback = new ScanCallback() { @Override public […]