标签: android-4.3-jelly-bean

Android 4.3蓝牙低功耗不稳定

我目前正在开发一种将使用蓝牙低功耗的应用程序(在Nexus 4上进行测试).在开始使用Android 4.3中的官方BLE API之后,我注意到在我第一次连接设备后,我很少能够成功连接到该设备或与该设备或任何其他设备进行通信.

按照此处的指南,我可以成功连接到设备,扫描服务和特性,以及读取/写入/接收通知而不会出现任何问题.但是,在断开连接并重新连接后,我经常无法扫描服务/特性或无法完成读/写操作.我在日志中找不到任何内容来说明为什么会发生这种情况.

一旦发生这种情况,我必须卸载应用程序,禁用蓝牙,然后重新启动手机才能再次开始工作.

每当设备断开连接时,我都要确保在BluetoothGatt对象上调用close()并将其设置为null.任何见解?


编辑:
日志转储:对于这些日志,我根据我的手机并在/etc/bluetooth/bt_stack.conf中提升了相关项目的跟踪级别

连接成功 - 重新启动手机并安装应用后首次尝试.我能够连接,发现所有服务/特性,以及读/写.

失败尝试1 - 这是断开上述成功连接后的下一次尝试.似乎我能够发现特征,但是第一次尝试读取时返回了一个空值并且很快就断开了.

失败的尝试2 - 我甚至无法发现服务/特征的示例.


编辑2:
我尝试连接的设备基于TI的CC2541芯片.我获得了TI SensorTag(也基于CC2541),并发现TI 昨天为SensorTag 发布了一个Android应用程序.但是,这个应用程序有同样的问题.我在另外两个Nexus 4上进行了测试,结果相同:第一次或第二次连接SensorTag成功,但是(根据日志)之后无法发现服务,导致各种崩溃.我开始怀疑这个特定芯片是否存在问题?

android bluetooth bluetooth-lowenergy android-bluetooth android-4.3-jelly-bean

186
推荐指数
5
解决办法
10万
查看次数

IOException:读取失败,套接字可能关闭 - Android 4.3上的蓝牙

目前我正试图在我的Nexus 7(2012)上使用Android 4.3(Build JWR66Y,我猜第二次4.3更新)打开BluetoothSocket时遇到一个奇怪的异常.我已经看到了一些相关的帖子(例如/sf/ask/955386141/),但似乎没有提供此问题的解决方法.此外,正如在这些线程中所建议的那样,重新配对没有帮助,并且不断尝试连接(通过愚蠢的循环)也没有任何效果.

我正在处理嵌入式设备(noname OBD-II车载适配器,类似于http://images04.olx.com/ui/15/53/76/1316534072_254254776_2-OBD-II-BLUTOOTH-ADAPTERSCLEAR-CHECK-ENGINE-灯光与你的电话-Oceanside.jpg).我的Android 2.3.7手机连接没有任何问题,同事的Xperia(Android 4.1.2)也可以使用.另一个Google Nexus(我不知道'One'或'S',但不是'4')也因Android 4.3而失败.

这是连接建立的片段.它在自己的Thread中运行,在Service中创建.

private class ConnectThread extends Thread {

    private static final UUID EMBEDDED_BOARD_SPP = UUID
        .fromString("00001101-0000-1000-8000-00805F9B34FB");

    private BluetoothAdapter adapter;
    private boolean secure;
    private BluetoothDevice device;
    private List<UUID> uuidCandidates;
    private int candidate;
    protected boolean started;

    public ConnectThread(BluetoothDevice device, boolean secure) {
        logger.info("initiliasing connection to device "+device.getName() +" / "+ device.getAddress());
        adapter = BluetoothAdapter.getDefaultAdapter();
        this.secure = secure;
        this.device = device;

        setName("BluetoothConnectThread");

        if (!startQueryingForUUIDs()) {
            this.uuidCandidates = Collections.singletonList(EMBEDDED_BOARD_SPP);
            this.start();
        } …
Run Code Online (Sandbox Code Playgroud)

android serial-port bluetooth android-4.3-jelly-bean

95
推荐指数
8
解决办法
12万
查看次数

Chrome的远程调试(USB调试)不适用于运行android 4.3的三星Galaxy S3

自从我将Samsung Galaxy S3升级到android 4.3(从4.1.2开始)以来,我无法使用Chrome的远程调试android(此处有更多详细信息).

我在手机上启用了开发人员选项和USB调试功能,这在android 4.1.2上运行得非常好.现在,当我将手机连接到PC时,它只是作为媒体存储设备连接,而不是通过chrome发现的USB设备.

我排除了Chrome的任何问题,因为我可以使用谷歌Nexus4进行USB调试,同时,看看其他一些线程(这里和其他地方)它似乎是三星4.3升级的问题.

有任何指示让这个工作?

google-chrome samsung-mobile usb-debugging android-4.3-jelly-bean

86
推荐指数
4
解决办法
10万
查看次数

如何通过BLE(蓝牙低功耗)将Android设备连接到iOS设备

我正在尝试制作一个使用Android 新蓝牙低功耗API的应用程序.为此,我开始使用API等级为18的BLE样本.

当我读到Android无法充当外围设备时,我将Android手机置于中央模式,扫描周围的BLE设备.为此,我使用模拟心脏传感器的北欧平台进行了一些测试.一切都以完美的方式运作!

在此之后,我尝试选择iPhone(iOS 7 beta 4)并将其置于外围设备中并模拟心率传感器作为之前的测试.Android应用程序可以看到设备并连接到它.但是在连接激活后,2个设备会在3-4秒内断开连接.除此之外,当我在Android端调用discoverServices()时,不会触发回调!在某些情况下,即使iOS蓝牙芯片处于关闭状态,Android设备也会收到"已连接"事件.这很奇怪.为了证明这一点,我将Nordic Board置于中央模式,并且我能够正确连接到iOS设备,没有任何问题.

会是什么呢?Android或iOS有一些限制,不允许从Android连接到iOS或反之亦然?

谢谢.

编辑:经过一些艰难的测试,我在AOSP页面上提出了一个问题.可以在这里查看

android ios core-bluetooth bluetooth-lowenergy android-4.3-jelly-bean

82
推荐指数
2
解决办法
2万
查看次数

Android BLE API:未收到GATT通知

用于测试的设备:Nexus 4,Android 4.3

连接工作正常,但onCharacteristicChanged我的回调方法永远不会被调用.但是我正在使用setCharacteristicNotification(char, true)inside 注册通知onServicesDiscovered,该函数甚至返回true.

设备日志(当通知应该出现/通过蓝牙设备发送时,实际上根本没有消息):

07-28 18:15:06.936  16777-16809/de.ffuf.leica.sketch D/BluetoothGatt: setCharacteristicNotification() - uuid: 3ab10101-f831-4395-b29d-570977d5bf94 enable: true
07-28 18:15:06.936    4372-7645/com.android.bluetooth D/BtGatt.GattService: registerForNotification() - address=C9:79:25:34:19:6C enable: true
07-28 18:15:06.936    4372-7645/com.android.bluetooth D/BtGatt.btif: btif_gattc_reg_for_notification
07-28 18:15:06.946    4372-7645/com.android.bluetooth D/BtGatt.btif: btgattc_handle_event: Event 1018
07-28 18:15:06.946    4372-7645/com.android.bluetooth D/BtGatt.GattService: onRegisterForNotifications() - address=null, status=0, registered=1, charUuid=3ab10101-f831-4395-b29d-570977d5bf94
07-28 18:15:06.946    4372-7645/com.android.bluetooth D/BtGatt.btif: btgattc_handle_event: Event 1016
07-28 18:15:06.946    4372-7645/com.android.bluetooth D/BtGatt.btif: btgattc_handle_event: Event 1018
07-28 18:15:06.946    4372-7645/com.android.bluetooth D/BtGatt.GattService: onRegisterForNotifications() - address=null, status=0, …
Run Code Online (Sandbox Code Playgroud)

android bluetooth bluetooth-lowenergy gatt android-4.3-jelly-bean

68
推荐指数
5
解决办法
7万
查看次数

使用蓝牙LE在iOS和Android之间进行通信

我有一个使用CoreBluetooth的工作应用程序在iPad(中央)和iPhone(外围设备)之间进行通信.我有一项服务有两个特点.我有一台运行最新Android 4.3并支持BTLE的Nexus 7.Android有点迟到了BTLE的潮流,但看起来他们正在接近它,就像iOS的做法一样,最初他们只支持在后续版本中作为外设模式的中心.我可以加载示例Android BTLE应用程序并浏览附近的外围设备.将我的iPhone广告作为外围设备,我可以在Android端附近的外围设备列表中看到CBAdvertisementDataLocalNameKey的值.我可以连接到iPhone,蓝牙符号在连接时从浅灰色变为黑色.连接始终持续10秒,然后断开连接.在Android方面,我应该会在连接时看到可用服务和特征列表.我已经证明Android代码设置正确,因为我可以将它连接到我所拥有的TI CC2541DK-SENSOR硬件,并在连接时列出所有服务和特性.

我花了最后几天对问题进行排查,但没有成功.问题是我无法确定哪个设备出现错误并因此导致断开连接.在连接阶段或服务发现阶段没有来自CBPeripheralManagerDelegate的回调,所以我不知道错误发生在什么时候(如果错误发生在iOS端).在Android方面,调用一个方法来启动服务发现,但是从不调用它们的回调"onServicesDiscovered",这是令人困惑的.有什么方法可以深入了解iOS端BTLE通信的内容,看看发生了什么,并确定发生了什么错误?

ios core-bluetooth bluetooth-lowenergy android-bluetooth android-4.3-jelly-bean

45
推荐指数
3
解决办法
4万
查看次数

run-as Package'abc'未知 - Galaxy S4 Jellybean或Android 4.3

我无法为运行Jellybean 4.2.2的Galaxy S4运行run-as(或ndk-gdb).

~  $ adb shell
shell@android:/ $ run-as a.b.c ls
run-as: Package 'a.b.c' is unknown
Run Code Online (Sandbox Code Playgroud)

对于pre-ICS设备,这个问题有多个答案,但这些答案似乎已在ICS中得到修复.

更新 - 2013年8月:在最初出现在带有Jellybean 4.2.2的Galaxy S4之后,现在似乎是所有4.3设备上的运行问题.看到这个Android bug.

请在此处查看已确认的Android问题.

更新 - 2013年11月:谷歌发布了修复Android 4.4中运行的修补程序.

android gdb android-ndk ndk-gdb android-4.3-jelly-bean

34
推荐指数
1
解决办法
2万
查看次数

具有128位UUID的startLeScan在本机Android BLE实现上不起作用

我在Nexus 4上新推出的Android 4.3 BLE API上使用startLeScan(新UUID [] {MY_DESIRED_128_BIT_SERVICE_UUID},回调)时遇到问题.

回调就是没有被调用.我仍然可以在日志中看到传入的包:

08-02 15:48:57.985: I/bt-hci(1051): btu_ble_process_adv_pkt
08-02 15:48:58.636: I/bt-hci(1051): BLE HCI(id=62) event = 0x02)
Run Code Online (Sandbox Code Playgroud)

如果我不使用该参数来过滤UUID,它可以工作.我们使用制造商特定的128位UUID作为我们公司的设备.

现在,我们的设备提供的服务比我在阵列中提供的服务更多.但那应该不是问题.

有人面临同样的问题吗?有解决方案吗

编辑

有几个与扫描有关的问题,这个问题只讨论一个问题:如果您还有扫描问题,请先阅读此评论.还要记住,我的设备强加了16位和128位UUID.大多数人都使用BLE标准提供的16位UUID,如Heart rate或Speed and Cadence.

android bluetooth-lowenergy gatt android-4.3-jelly-bean

34
推荐指数
4
解决办法
3万
查看次数

Android蓝牙低能耗配对

如何将蓝牙低功耗(BLE)设备与Android 配对以读取加密数据.

使用Android BLE页面中的信息,我能够发现设备,连接设备,发现服务和读取未加密的特征.

当我尝试读取加密的特性(一个会导致iOS显示弹出窗口要求配对然后完成读取)时,我收到错误代码5,这对应于认证不足.

我不确定如何使设备配对或如何提供读取完成的身份验证信息.

我通过尝试添加描述符来玩弄BluetoothGattCharacteristics,但这也不起作用.
任何帮助表示赞赏!

android bluetooth bluetooth-lowenergy gatt android-4.3-jelly-bean

33
推荐指数
1
解决办法
5万
查看次数

Android API 18中的windowContentOverlay发生了什么变化?

将手机升级到Android 4.3后,我注意到操作栏下面的阴影不再显示了.在我的应用程序中,我有一个自定义阴影使用windowContentOverlay:

<item name="android:windowContentOverlay">@drawable/shadows_bottom</item>
Run Code Online (Sandbox Code Playgroud)

它一直在展示,但现在它已经在API 18上消失.从主题中删除该行不会改变任何东西.而在其他API版本上,它显示默认的轻微阴影.

其他人都注意到了这个问题?

android android-actionbar android-4.3-jelly-bean

29
推荐指数
2
解决办法
3万
查看次数