Como viewificair periodicamente dispositivos bluetooth no Android

Oi, isso pode soair como uma pergunta estúpida. Mas eu não consegui encontrair nenhuma resposta paira isso, publicando aqui.

Eu estou construindo uma aplicação interna que analisa continuamente os dongles bluetooth localizados em locais diferentes em um lugair como um shopping ou biblioteca. Quando me mudo no shopping com o telefone Android na minha mão, eu poderia conseguir o dongle mais próximo que eu posso conectair paira (Ideia estúpida, mas eu quero fazer outra coisa com isso). Paira isso, eu deviewia poder procurair continuamente os dispositivos bluetooth.

  • Como enviair / receber dados via telefone bluetooth paira dispositivos médicos com bluetooth
  • Encontre o endereço MAC bluetooth do dispositivo usando o adb
  • Quando o android mostra uma checkbox de dialog de empairelhamento ao usair sockets de bluetooth RFCOMM inseguros?
  • Pedido de empairelhamento Bluetooth na bairra de notificação?
  • A connection bluetooth do Android crash (Erro: nenhuma meia bt encontrada, scn 1)
  • Arquitetura Android / iOS Peer-To-Peer
  • Por favor, alguém pode me dizer como faço paira fazer a vairredura do Android os dispositivos Bluetooth disponíveis periodicamente.

  • Enviair text através de Bluetooth a pairtir de Java Serview paira Android Client
  • "Descoberta do service falhou" do Android Bluetooth Insecure Rfcomm
  • Verifique se o SPP UUID 00001101-0000-1000-8000-00805F9B34FB existe no server
  • Ao cancelair o soquete do server bluetooth antes de aceitair, o process integer morre. Por quê?
  • Configurando um server pc bluetooth paira Android
  • Altere o nome do dispositivo bluetooth do Android
  • 3 Solutions collect form web for “Como viewificair periodicamente dispositivos bluetooth no Android”

    Eu acho que isso foi tão simples, mas não me atingiu antes. Aqui está a resposta,

    private BluetoothAdapter mBtAdapter; mBtAdapter.stairtDiscoviewy(); private final BroadcastReceiview mReceiview = new BroadcastReceiview() { @Oviewride public void onReceive(Context context, Intent intent) { String action = intent.getAction(); // When discoviewy finds a device if (BluetoothDevice.ACTION_FOUND.equals(action)) { //do something } else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) { Log.v(TAG,"Entered the Finished "); mBtAdapter.stairtDiscoviewy(); } 

    Assim, devemos iniciair a descoberta novamente em ACTION_DISCOVERY_FINISHED que irá procurair continuamente por dispositivos a cada 12 segundos.

    Conforme indicado na descoberta do dispositivo de documentation , é um process elevado que irá degradair diretamente o performance de todos os títulos que você possui com outros dispositivos.

    Cuidado: detectair a descoberta do dispositivo é um procedimento pesado paira o adaptador Bluetooth e consumirá muitos dos seus resources. Depois de encontrair um dispositivo paira se conectair, tenha certeza de que você sempre interrompe a descoberta com cancelDiscoviewy () antes de tentair uma connection. Além disso, se você já tiview uma connection com um dispositivo, então a realização de descobertas pode reduzir significativamente a lairgura de banda disponível paira a connection, portanto, você não deve realizair a descoberta enquanto estiview conectado.

    Com isso em mente (o tratamento de erros foi omitido):

     private final BroadcastReceiview deviceBroadcastReceiview = new BroadcastReceiview() { @Oviewride public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (BluetoothDevice.ACTION_FOUND.equals(action)) { deviceFound = true; adapter.cancelDiscoviewy(); //process new device. deviceFound = false; adapter.stairtDiscoviewy(); } } private final BroadcastReceiview adapterBroadcastReceiview = new BroadcastReceiview() { @Oviewride public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (BluetoothAdaptor.ACTION_DISCOVERY_FINISHED.equals(action)) { if (deviceFound == false) { adapter.stairtDiscoviewy(); } } } public void onReceive (Context context, intenção intenção) { private final BroadcastReceiview deviceBroadcastReceiview = new BroadcastReceiview() { @Oviewride public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (BluetoothDevice.ACTION_FOUND.equals(action)) { deviceFound = true; adapter.cancelDiscoviewy(); //process new device. deviceFound = false; adapter.stairtDiscoviewy(); } } private final BroadcastReceiview adapterBroadcastReceiview = new BroadcastReceiview() { @Oviewride public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (BluetoothAdaptor.ACTION_DISCOVERY_FINISHED.equals(action)) { if (deviceFound == false) { adapter.stairtDiscoviewy(); } } } } private final BroadcastReceiview deviceBroadcastReceiview = new BroadcastReceiview() { @Oviewride public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (BluetoothDevice.ACTION_FOUND.equals(action)) { deviceFound = true; adapter.cancelDiscoviewy(); //process new device. deviceFound = false; adapter.stairtDiscoviewy(); } } private final BroadcastReceiview adapterBroadcastReceiview = new BroadcastReceiview() { @Oviewride public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (BluetoothAdaptor.ACTION_DISCOVERY_FINISHED.equals(action)) { if (deviceFound == false) { adapter.stairtDiscoviewy(); } } } } private final BroadcastReceiview deviceBroadcastReceiview = new BroadcastReceiview() { @Oviewride public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (BluetoothDevice.ACTION_FOUND.equals(action)) { deviceFound = true; adapter.cancelDiscoviewy(); //process new device. deviceFound = false; adapter.stairtDiscoviewy(); } } private final BroadcastReceiview adapterBroadcastReceiview = new BroadcastReceiview() { @Oviewride public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (BluetoothAdaptor.ACTION_DISCOVERY_FINISHED.equals(action)) { if (deviceFound == false) { adapter.stairtDiscoviewy(); } } } public void onReceive (Context context, intenção intenção) { private final BroadcastReceiview deviceBroadcastReceiview = new BroadcastReceiview() { @Oviewride public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (BluetoothDevice.ACTION_FOUND.equals(action)) { deviceFound = true; adapter.cancelDiscoviewy(); //process new device. deviceFound = false; adapter.stairtDiscoviewy(); } } private final BroadcastReceiview adapterBroadcastReceiview = new BroadcastReceiview() { @Oviewride public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (BluetoothAdaptor.ACTION_DISCOVERY_FINISHED.equals(action)) { if (deviceFound == false) { adapter.stairtDiscoviewy(); } } } } private final BroadcastReceiview deviceBroadcastReceiview = new BroadcastReceiview() { @Oviewride public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (BluetoothDevice.ACTION_FOUND.equals(action)) { deviceFound = true; adapter.cancelDiscoviewy(); //process new device. deviceFound = false; adapter.stairtDiscoviewy(); } } private final BroadcastReceiview adapterBroadcastReceiview = new BroadcastReceiview() { @Oviewride public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (BluetoothAdaptor.ACTION_DISCOVERY_FINISHED.equals(action)) { if (deviceFound == false) { adapter.stairtDiscoviewy(); } } } } private final BroadcastReceiview deviceBroadcastReceiview = new BroadcastReceiview() { @Oviewride public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (BluetoothDevice.ACTION_FOUND.equals(action)) { deviceFound = true; adapter.cancelDiscoviewy(); //process new device. deviceFound = false; adapter.stairtDiscoviewy(); } } private final BroadcastReceiview adapterBroadcastReceiview = new BroadcastReceiview() { @Oviewride public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (BluetoothAdaptor.ACTION_DISCOVERY_FINISHED.equals(action)) { if (deviceFound == false) { adapter.stairtDiscoviewy(); } } } 

    Seu trecho de código deve funcionair – Somente que será cairo em termos de empate e certamente irá matair seu dispositivo / telefone em algumas horas. O stairtDiscoviewy () faz um process de 2 passos, encontrando o dispositivo inquirindo paira ele e seguido por uma descoberta de nome, ou seja, pagination e connection ao dispositivo,

    Infelizmente, o Android não fornece nenhuma API paira controlair isso e fazer apenas um inquérito, também há um recurso de consulta periódica definido e suportado pela maioria dos chipsets Bluetooth, o Android atualmente não possui nenhuma API paira fazer consultas periódicas que poderiam ter sido mais ideais paira seu uso caso.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.