2015-09-18 13 views
9

Tôi đã thử quảng cáo Bluetooth LE, tức là sử dụng điện thoại Android làm thiết bị "ngoại vi" BLE. Bắt đầu và dừng quảng cáo liên tục một khi hoạt động tốt nhưng nếu tôi thực sự chuyển một số dữ liệu khác nhau, tôi sẽ cần phải bắt đầu, dừng và khởi động lại quảng cáo trong một chu kỳ và luôn thay đổi gói quảng cáo.Quảng cáo LE LE không thành công khi bắt đầu và dừng theo chu kỳ

Tôi đang sử dụng các phương pháp này tất nhiên:
BluetoothLeAdvertiser.startAdvertising()
BluetoothLeAdvertiser.stopAdvertising()

Ít nhất trên Motorola Moto G 4G 2nd gen. (XT1072) với Android 5.0.2 chu trình chỉ chạy trong một thời gian và sau đó xảy ra sự cố trong ngăn xếp Bluetooth và quảng cáo mới không còn có thể được bắt đầu nữa. Khi chạy chu kỳ một cách nhanh chóng điều này xảy ra một cách nhanh chóng và nếu chạy chậm nó mất nhiều thời gian hơn để nó có thể liên quan đến một số bộ đệm đầy.

Câu hỏi của tôi là: Điều này cũng xảy ra trên các thiết bị khác ngoài Motorola không?

(Và bất kỳ ý kiến ​​liên quan khác là đương nhiên hoan nghênh.)

Về mặt lý thuyết nó có thể phụ thuộc vào một số nhà sản xuất thực hiện HAL cụ thể vv để tôi muốn biết nếu tôi chỉ cần có được một thiết bị khác để có thể để giải quyết vấn đề này vì mọi sửa chữa từ Google/Motorola sẽ mất một thời gian.

Ứng dụng thử nghiệm này. có thể được sử dụng để thử này ra:

https://bitbucket.org/MarkusKauppinen/bleadvertisertest

Nếu mọi thứ diễn ra tốt nó sẽ vui vẻ tiếp tục quảng cáo cho bao giờ hết và nếu vấn đề này tái tạo, nó sẽ hiển thị một hộp thoại trong vòng một vài phút hoặc lâu hơn. Nếu thiết bị của bạn không hỗ trợ quảng cáo Bluetooth LE hoặc BLE, nó sẽ bị hỏng. (Nó chỉ là một ứng dụng thử nghiệm nhanh chóng và bẩn.)

Một cách dễ dàng khác để tạo lại ứng dụng này là chạy ứng dụng "bluetoothadvertiser" từ https://github.com/devunwired/accessory-samples và chỉ cần chạm nhanh vào nút "Cập nhật quảng cáo" trên giao diện người dùng cho trong khi.

chi tiết bổ sung:

LE ngoại vi chế độ hỗ trợ

Bluetooth (cần thiết cho quảng cáo) đã được bổ sung trong Lollipop và không có sẵn trong 4.x. Chỉ một số thiết bị có hỗ trợ chế độ ngoại vi. Khả năng tương thích được bao phủ ít nhất là trong:

https://altbeacon.github.io/android-beacon-library/beacon-transmitter-devices.html Chipsets/Devices supporting Android 5 BLE peripheral mode chipsets supporting BLE peripheral role on Android 5

Ví dụ những thiết bị này cần có sự hỗ trợ: Motorola Moto E 4G (2015), Motorola Moto G 4G (. 2nd gen), Sony Xperia M4 Aqua, ZTE Blade S6, Motorola Moto X (2014), Samsung Galaxy S6, Google Nexus 6, Google Nexus 9, HTC One M9, Samsung Galaxy S6 Cạnh.

Đối với các "chi tiết bẩn" Tôi luôn có thể nhìn thấy một "GKI_Exception" trong LogCat trước khi điều này xảy ra:

GKI_exception(): 65.524 getbuf: ra khỏi bộ đệm

Ngay sau khi quảng cáo "GKI_Exception" đầu tiên không thành công với AdvertiseCallback.ADVERTISE_FAILED_INTERNAL_ERROR. Dòng...

E/BtGatt.btif? ### ASSERT: external/bluetooth/bluedroid/main /../ btif/src/btif_gatt_client.c dòng 803 Chuyển ngữ cảnh không thành công! (3) ###

... có thể có liên quan nhưng tôi không quen với BlueDroid. Các khẳng định nói là ở đây:

https://android.googlesource.com/platform/external/bluetooth/bluedroid/+/android-5.0.2_r1/btif/src/btif_gatt_client.c#803

Một số vấn đề có thể liên quan:
https://code.google.com/p/android/issues/detail?id=65455 < - tôi đã thêm một số ý kiến ​​và đăng nhập các tập tin để thế này.
https://code.google.com/p/android-developer-preview/issues/detail?id=1753
Scanning large number of BLE Tags
Bluetooth Crash on Samsung S4

+1

Tôi đang gặp sự cố tương tự với Moto G XT1032 với phiên bản 5.1 và Moto G XT1063 với 5.0.2. Tôi đang cố gắng để quét -> kết nối -> đọc các đặc điểm -> ngắt kết nối -> quét lại nhưng nó sẽ thất bại khi khởi động lại quá trình quét. Bạn đã quản lý để tìm một giải pháp cho điều này? –

+0

Rất tiếc, không tìm thấy giải pháp nào. –

Trả lời

2

Tôi đã thử nghiệm ứng dụng của bạn trên Moto G 2nd Gen và chạy vào cùng một vấn đề.

Tôi đã thử trên máy tính bảng Nexus 9 chạy Android 6.0, ở đó tôi không thể tạo lại lỗi và có vẻ như nó hoạt động. Ngoài ra trên một máy nghe nhạc Nexus với Android 5.1.1 nó dường như chạy mà không có vấn đề. Vì vậy, hoặc nó thực sự là một vấn đề của Moto G hoặc - những gì tôi nghĩ là nhiều khả năng - một lỗi của Android 5.0.2 đã được giải quyết trong các phiên bản sau này.

Các vấn đề liên quan