2016-03-03 18 views
7

Chúng tôi đang đối mặt với một vấn đề khi đọc các đặc tính từ thiết bị BLE từ xa.Đọc thêm 20 byte từ thiết bị BLE từ xa không thành công trong Lolipop

Sự cố này xảy ra trong Android OS 5.0 trở lên.

điểm là dưới đây để tạo ra vấn đề:

  1. Thực hiện một thiết bị ngoại vi với một dịch vụ và một đặc điểm.
  2. Đặc điểm sẽ chỉ đọc quyền. Bây giờ hãy đặt giá trị của các đặc điểm này với hơn 20 ký tự, tức là 20 byte.
  3. Bây giờ, hãy để thiết bị ngoại vi tự phát sóng với một dịch vụ và một đặc điểm.
  4. Hãy khởi chạy bất kỳ ứng dụng máy quét BLE nào từ thị trường và kết nối với thiết bị ngoại vi này.
  5. Sau khi kết nối thành công với thiết bị ngoại vi, hãy thử đọc các đặc tính.
  6. Trong trường hợp này, nó sẽ không hiển thị bất kỳ dữ liệu nào và khi gỡ lỗi ứng dụng, nó cho thấy rằng nó trả về dữ liệu rỗng.
  7. Trường hợp tương tự trên không hoạt động trong Android OS 5.0 trở lên.
  8. Trường hợp tương tự hoạt động trên Android 4.4.

Vì vậy, có cái gì đó thay đổi trong hệ điều hành Android 5.0 trở lên mà trong nội bộ vô hiệu hóa readblob() yêu cầu mà có thể đọc dữ liệu có hơn 20 ký tự.

Chúng tôi đang tìm kiếm một số trợ giúp để giải quyết vấn đề này.

+0

http://stackoverflow.com/questions/24135682/android-sending-data-20-bytes-by-ble – pRaNaY

Trả lời

0

Điều này có thể dễ dàng đạt được bằng cách tách dữ liệu của bạn thành các gói 20 byte và thực hiện một sự chậm trễ ngắn (tức là sử dụng sleep()) giữa việc gửi từng gói.

Bạn có thể sử dụng BluetoothGatt.requestMtu(). Xem số Official document of BluetoothGatt.requestMtu

 Request an MTU size used for a given connection. 
     When performing a write request operation (write without response), the data  
sent is truncated to the MTU size. This function may be used to request a larger MTU size to be able to send more data at once. 

A onMtuChanged(BluetoothGatt, int, int) callback will indicate whether this operation was successful. 

Requires BLUETOOTH permission. 

Nếu bạn muốn gửi thêm 20 byte, bạn nên xác định mảng byte [] bao gồm số gói bạn muốn. Có một ví dụ Android: Sending data >20 bytes by BLE

Cũng có một ví dụ khác How to send more than 20 bytes data over ble in android?

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