Вот мой код для обратного вызова сканера.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
.
Что означает нулевое устройство, как я могу это исправить?
Любые советы будут оценены.
С уважением
У меня есть обычное оборудование, в котором есть чистый чип BLE, он не может делать классический. Это же устройство, которое я использовал в своем доме/работе без проблем. И обратный вызов сканирования дает мне нулевое устройство, то есть, если я буду выполнять операции над ним, я бы получил исключение Null Point Exception. Если не найдено ни одного устройства (не), то scanLeCallback даже не запускается, почему я даю мне нулевое устройство? В руководстве разработчика у них даже нет нулевой проверки, они предполагают, что все найденные в этой точке устройства не являются нулевыми. –
Звучит интересно. Не могли бы вы взглянуть на этот ответ? http://stackoverflow.com/a/26361694/3145960 –
его проблема выглядит несколько иначе, потому что его BluetoothDevice не является нулевым, просто имя устройства равно null. Но, я еще не посмотрел массив объявлений, я посмотрю, что я могу найти. И сообщите об этом, но если предположить, что он пуст, что вы предлагаете? –