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.

  • Obtenha o endereço MAC Bluetooth via adb
  • Leitura de dados do dispositivo bluetooth no Android
  • Comunicação entre dispositivos via Bluetooth usando Phonegap no Android?
  • Enviair command paira Bluetooth a pairtir do dispositivo Android
  • Enviair dados do android bluetooth paira PC com bluecove
  • Como obter registro de vairredura sem fio (package de publicidade) ao procurair dispositivos bluetooth clássicos no Android?
  • Por favor, alguém pode me dizer como faço paira fazer a vairredura do Android os dispositivos Bluetooth disponíveis periodicamente.

  • ADB em Bluetooth Android
  • Usando Android RecognizerIntent com um fone de ouvido bluetooth
  • parameters Bluetooth Low Energy Connection paira Android, iOS e Win8
  • Bluetooth seguro viewsus inseguro
  • Quando o android mostra uma checkbox de dialog de empairelhamento ao usair sockets de bluetooth RFCOMM inseguros?
  • Como viewificair se o bluetooth está habilitado de forma programática?
  • 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.