Ligar automaticamente ao dispositivo bluetooth emparelhado quando estiver ao alcance

Objectivo:

Estou a tentar fazer com que o meu serviço android se auto-ligue a um já dispositivo bluetooth emparelhado quando está ao alcance.

Exemplo:

Tenho o meu iphone ligado ao meu carro. Quando me sento no meu carro música começa a tocar automaticamente. Não preciso de o ligar outra vez. I não precisas de começar uma canção. Apenas lança o itunes e começa a tocar musica. Quero este tipo de conectividade no meu Andróide. aplicacao.

uma solução óbvia é ter um tópico a correr num serviço de fundo que tenta ligar-se a cada X segundos. Isto, no entanto, não é ideal devido ao número de vítimas na vida útil da bateria.

Tentei configurar os receptores de transmissão para serem accionados no dispositivo, mas isto só parece ser chamado depois de me ligar ao dispositivo.

Não há maneira do meu aplicativo receber uma notificação quando o telefone entra no alcance do dispositivo?

Gastei a melhor parte do último dois dias a tentar fazer isto funcionar sem sorte. Há um bilhão de tutoriais sobre como se conectar a um dispositivo bt, mas nenhum para se conectar automaticamente quando em alcance. Começo a questionar se isto é possível.. Se não for ...

questões conexas:

procurar os dispositivos bluetooth já emparelhados automaticamente, quando estiverem ao alcance

Author: Community, 2014-10-26

2 answers

Tanto quanto sei, não há forma de ligar-se automaticamente a um dispositivo Bluetooth genérico assim que estiver ao alcance. A sua melhor aposta é ter um loop de inquérito, questionando periodicamente os dispositivos disponíveis e conectando-se a aqueles com os quais você Está ligado (embora, como você disse, isto é bastante intenso em bateria).

No entanto, se o seu dispositivo (tanto o telefone como o periférico) suportar Bluetooth 4.0 (LE), bem como o GATT, poderá usar o método connectGatt que irá ligar-se automaticamente assim que o dispositivo se torna disponível (mais uma vez, não muito certo sobre as implicações da bateria, embora testes limitados que eu tenho feito até agora mostra que não é significativo).

Não sei bem qual é o comportamento do dispositivo quando não é do GATT, mas talvez valha a pena investigar.GATT_FAILURE quando o dispositivo se torna ao alcance, mas não apoia o GATT (isto dar-lhe-ia pelo menos uma indicação de quando se ligar).

Se encontrar uma solução ou investigar o comportamento deste método em dispositivos não-LE / não-GATT, por favor actualize a sua pergunta, pois eu teria muita curiosidade em saber mais sobre ele.

 5
Author: Bart Platak, 2014-10-26 02:29:41
Como mencionado anteriormente, não há nenhuma maneira fácil de fazer isso com Bluetooth Classic a não ser através de digitalização constante. O cenário de rádio do carro que mencionou, no entanto, funciona com alguns rádios de carros-mina estabelece automaticamente uma conexão Bluetooth com o meu telefone assim que eu ligar o rádio. Observei comportamento semelhante com teclados Bluetooth. Só posso especular que estes periféricos, periodicamente, tentam ligar-se a dispositivos emparelhados até serem bem sucedidos. Presente faz sentido para um periférico em certas condições:
    Drenar a bateria não é uma preocupação. (O rádio funciona de uma bateria de carro, e na maioria das vezes Está ligado, o motor está funcionando e a bateria é carregada.) A periférica fala com apenas um telefone de cada vez, e assim pode suspender suas varreduras enquanto está conectada a um. (Este rádio em particular só pode lidar com um telefone de cada vez.)
  • o periférico é praticamente inútil quando não está ligado a outro dispositivo, e pode assim, espera-se que esteja ligado a algo durante a maior parte do Tempo em que é ligado. (Isto vale para auscultadores, teclados, ratos e coisas assim.)
Obviamente, isso depende da sua capacidade de influenciar o comportamento do dispositivo emparelhado. Se é um dispositivo fora da prateleira, ou funciona ou não-mas se você está projetando um periférico personalizado, vale a pena considerar.
 0
Author: user149408, 2017-07-12 22:50:36