2015-07-06 2 views
0

Привет, это моя первая публикация. Im делает приложение для Android, которое обнаруживает только Bluetooth-устройство, используя дружественное имя и MAC-адрес. Не спаривание.Как заставить Android продолжать сканирование

Проблема, с которой сталкивается проблема, заключается в том, что мое устройство не может обнаружить новое устройство, которое вводит диапазон после запуска сканирования примерно от 10 до 12 секунд.

final BroadcastReceiver bReceiver = new BroadcastReceiver() { 
    public void onReceive(Context context, Intent intent) { 
     String action = intent.getAction(); 
     // When discovery finds a device 
     if (BluetoothDevice.ACTION_FOUND.equals(action)) { 
      // Get the BluetoothDevice object from the Intent 
      BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); 
      // add the name and the MAC address of the object to the arrayAdapter 
      // System.out.println(device.getAddress()); 

      for(int i=0;i<listmac.size();i++) 
      { 
       if(listmac.get(i).equals(device.getAddress())){ 
        System.out.println(listname.get(i)); 
        myListView.setItemChecked(i, true); 
        } 
      } 
     } 
    } 
}; 

public void find(View view) { 
     if (myBluetoothAdapter.isDiscovering()) { 
      // the button is pressed when it discovers, so cancel the discovery 
      myBluetoothAdapter.cancelDiscovery(); 
     } 
     else { 
      myBluetoothAdapter.startDiscovery(); 

      registerReceiver(bReceiver, new IntentFilter(BluetoothDevice.ACTION_FOUND)); 
      isBreceiverRegisted = true; 
     }  
    } 

public void off(){ 
     myBluetoothAdapter.disable(); 

     Toast.makeText(getApplicationContext(),"Bluetooth turned off", 
       Toast.LENGTH_LONG).show(); 
    } 

Извините за мой английский мели

ответ

0

Просто потому, что задача открытие имеет тайм-аут, чтобы предотвратить бесконечный поиск. Чтобы быть в состоянии обнаружить, что открытие закончилась вам нужно добавить это намерение

if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) { 
     // When discovery is finished , start discovery again 
     myBluetoothAdapter.startDiscovery(); 
     } 
    } 

Будьте очень осторожны, в общем о случайном выходе устройства в открытии-режиме. Выполнение обнаружения устройства - это тяжелая процедура для адаптера Bluetooth и потребляет много ресурсов.

Смежные вопросы