2016-08-28 3 views
2

Вот мой код для обратного вызова сканера.Android scanLeCallback возвращает Null BluetoothDevice

private BluetoothAdapter.LeScanCallback mLeScanCallback = 
    new BluetoothAdapter.LeScanCallback() { 
     @Override 
     public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) { 
      runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        if (device == null) { 
         return; 
        } 
        if (!device.getName().startsWith("DEVICE_NAME")) { 
         System.out.println("Did not start with DEVICE_NAME, removing: " + device.getName()); 
         return; 
        } 
        if (!devices.contains(device)) { 
         System.out.println("Valid DEVICE_NAME Adding: " + device.getName()); 
         devices.add(device); 
        } 
       } 
      }); 
     } 
    }; 

Я получаю объект пустой BluetoothDevice при сканировании в определенных географических районах. Например, он отлично работает в моем доме или месте работы.

Однако, если я заберу свое оборудование + телефон в аэропорт или большие гостиницы Марриотта, тогда он испортится и вернет мне нуль BluetoothDevice.

Что означает нулевое устройство, как я могу это исправить?

Любые советы будут оценены.

С уважением

ответ

1

Я получаю объект пустой BluetoothDevice при сканировании в определенных географических точках.

Этого не должно быть, если у вас одинаковые устройства BLE. На своем месте работы или дома убедитесь, что окружающие устройства BLE одинаковы для целей тестирования.

Что нулевое устройство означает,

Простой, как не найденных устройств. Но для справки я просто цитирую от developers guide.

Вы можете сканировать только устройства Bluetooth LE или сканировать классические устройства Bluetooth, как описано в Bluetooth. Вы не можете одновременно сканировать как Bluetooth LE, так и классические устройства.

Я хотел бы поделиться некоторыми из своих впечатлений здесь. Некоторые устройства Bluetooth должны быть доступны для поиска, когда вы просматриваете соседние устройства. Это нужно помнить тоже.

Сообщите мне, если это поможет!

+1

У меня есть обычное оборудование, в котором есть чистый чип BLE, он не может делать классический. Это же устройство, которое я использовал в своем доме/работе без проблем. И обратный вызов сканирования дает мне нулевое устройство, то есть, если я буду выполнять операции над ним, я бы получил исключение Null Point Exception. Если не найдено ни одного устройства (не), то scanLeCallback даже не запускается, почему я даю мне нулевое устройство? В руководстве разработчика у них даже нет нулевой проверки, они предполагают, что все найденные в этой точке устройства не являются нулевыми. –

+1

Звучит интересно. Не могли бы вы взглянуть на этот ответ? http://stackoverflow.com/a/26361694/3145960 –

+0

его проблема выглядит несколько иначе, потому что его BluetoothDevice не является нулевым, просто имя устройства равно null. Но, я еще не посмотрел массив объявлений, я посмотрю, что я могу найти. И сообщите об этом, но если предположить, что он пуст, что вы предлагаете? –

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