Atualmente, estou desenvolvendo um aplicativo que utilizará o Bluetooth Low Energy (teste no Nexus 4). Depois de começar com as APIs oficiais do BLE no Android 4.3, notei que, depois de conectar um dispositivo pela primeira vez, raramente consigo conectar / me comunicar com esse dispositivo ou com qualquer outro dispositivo.
Seguindo o guia aqui , posso conectar-me com êxito a um dispositivo, verificar serviços e características e ler / gravar / receber notificações sem problemas. No entanto, após desconectar e reconectar, muitas vezes não consigo verificar os serviços / características ou não consigo concluir uma leitura / gravação. Não consigo encontrar nada nos logs para indicar por que isso está acontecendo.
Quando isso acontece, tenho que desinstalar o aplicativo, desativar o Bluetooth e reiniciar o telefone antes que ele comece a funcionar novamente.
Sempre que um dispositivo é desconectado, lembre-se de chamar close () no objeto BluetoothGatt e defina-o como nulo. Alguma ideia?
EDIT:
Despejos de log: para esses logs, enraíquei meu telefone e aumentamos os níveis de rastreamento de itens relacionados no /etc/bluetooth/bt_stack.conf
Conexão bem-sucedida - Primeira tentativa após reiniciar o telefone e instalar o aplicativo. Sou capaz de conectar, descobrir todos os serviços / características e ler / escrever.
Tentativa com falha 1 - Esta é a próxima tentativa após desconectar da conexão bem-sucedida acima. Parece que fui capaz de descobrir características, mas a primeira tentativa de leitura retornou um valor nulo e foi desconectada logo depois.
Tentativa com falha 2 - Um exemplo em que eu nem consigo descobrir serviços / características.
EDIT 2:
O dispositivo ao qual estou tentando conectar é baseado no chip CC2541 da TI. Eu obtive uma TI SensorTag (também baseada no CC2541) para brincar e descobri que a TI lançou um aplicativo Android para a SensorTag ontem. No entanto, este aplicativo tem o mesmo problema. Eu testei isso em outros dois Nexus 4s com o mesmo resultado: A conexão com o SensorTag foi bem-sucedida na primeira ou na segunda vez, mas (de acordo com os registros) falha ao descobrir serviços a partir de então, causando todos os tipos de falhas. Estou começando a me perguntar se é um problema com esse chip específico?