Tôi hiện đang phát triển một ứng dụng sẽ sử dụng Bluetooth Low Energy (thử nghiệm trên Nexus 4). Sau khi bắt đầu với API BLE chính thức trong Android 4.3, tôi nhận thấy rằng sau khi tôi kết nối thiết bị lần đầu tiên, tôi hiếm khi có thể kết nối thành công / giao tiếp với thiết bị đó hoặc bất kỳ thiết bị nào khác.
Theo hướng dẫn ở đây , tôi có thể kết nối thành công với một thiết bị, quét các dịch vụ và đặc điểm và đọc / ghi / nhận thông báo mà không gặp sự cố nào. Tuy nhiên, sau khi ngắt kết nối và kết nối lại, tôi thường không thể quét các dịch vụ / đặc điểm hoặc không thể hoàn thành việc đọc / ghi. Tôi không thể tìm thấy bất cứ điều gì trong nhật ký để cho biết tại sao điều này xảy ra.
Khi điều này xảy ra, tôi phải gỡ cài đặt ứng dụng, tắt Bluetooth và khởi động lại điện thoại trước khi ứng dụng bắt đầu hoạt động trở lại.
Bất cứ khi nào một thiết bị bị ngắt kết nối, tôi đảm bảo gọi close () trên đối tượng BluetoothGatt và đặt thành null. Bất kỳ hiểu biết?
EDIT: Bản
ghi nhật ký: Đối với những bản ghi này, tôi đã root điện thoại của mình và tăng mức độ theo dõi của các mục liên quan trong /etc/bluetooth/bt_stack.conf
Kết nối thành công - Lần thử đầu tiên sau khi khởi động lại điện thoại và cài đặt ứng dụng. Tôi có thể kết nối, khám phá tất cả các dịch vụ / đặc điểm và đọc / ghi.
Thất bại 1 - Đây là lần thử tiếp theo sau khi ngắt kết nối thành công ở trên. Có vẻ như tôi đã có thể khám phá các đặc điểm, nhưng lần thử đầu tiên để đọc đã trả về giá trị null và bị ngắt kết nối ngay sau đó.
Thất bại 2 - Một ví dụ mà tôi thậm chí không thể khám phá các dịch vụ / đặc điểm.
EDIT 2:
Thiết bị mà tôi đang cố gắng kết nối dựa trên chip CC2541 của TI. Tôi đã nhận được TI SensorTag (cũng dựa trên CC2541) để chơi xung quanh và phát hiện ra rằng TI đã phát hành một ứng dụng Android cho SensorTag ngày hôm qua. Tuy nhiên, ứng dụng này có cùng một vấn đề. Tôi đã thử nghiệm điều này trên hai chiếc Nexus 4 khác với cùng kết quả: Kết nối với SensorTag thành công lần đầu hoặc lần thứ hai, nhưng (theo nhật ký) không phát hiện ra các dịch vụ sau đó, gây ra tất cả các sự cố. Tôi bắt đầu tự hỏi liệu đó có phải là vấn đề với con chip cụ thể này không?