Android Bluetooth, находит устройства с пустыми именами, на телефоне LG - PullRequest
1 голос
/ 16 августа 2011

Я написал небольшой приемник Bluetooth, который обрабатывает большинство состояний BT.

Приемник работает для большинства сценариев, я его выполнил, но в некоторых случаях обнаруженные Устройства содержат пустую строку для имени, и я не могу отличить одно устройство от другого.

Вот фрагмент кода находки и фрагмент журнала для его резервного копирования:

ПРИМЕЧАНИЕ. Адаптер BT был выключен и включен до второго обнаружения.

ДРУГОЕ ПРИМЕЧАНИЕ: Этот сценарий происходит ровно каждый второй раз. Первый раз имена найдены, второй раз нет имен

public class BT_Receiver
        extends BroadcastReceiver {
...
    @Override
    public void onReceive(Context context, Intent intent) {
        if (deviceDetectionListener.allDevicesFound())
            return;
        String action = intent.getAction();
        if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)) {
            int newState = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, -1);
            state = BT_State.getInstanceForState(newState);
            Toast.makeText(activity, state.name(), Toast.LENGTH_SHORT).show();
            if (state == BT_State.On && enableAndDiscover)
                startDiscoveringDevices();
            return;
        }
        if (BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(action)) {
            state = BT_State.Discovering;
            Toast.makeText(activity, state.name(), Toast.LENGTH_SHORT).show();
            return;
        }
        if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
            state = BT_State.On;
            Toast.makeText(activity, "Finished discovery", Toast.LENGTH_SHORT).show();
            return;
        }
        if (BluetoothAdapter.ACTION_SCAN_MODE_CHANGED.equals(action)) {
            int discoveryDuration = intent.getIntExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, -1);
            state = BT_State.Advertising;
            Toast.makeText(activity, state.name() + ", duration: " + discoveryDuration, Toast.LENGTH_SHORT).show();
        }
        if (!BluetoothDevice.ACTION_FOUND.equals(action))
            return;
        BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
(Look at the LOG RESULT)       
                    Log.i(TAG, "Bluetooth device found: " + device.getName() + ", " + device.getBluetoothClass() + ", " + device.getAddress());
        deviceDetectionListener.newDeviceDetected(device);
        if (deviceDetectionListener.allDevicesFound())
            detectionCompleted();
    }

...
}

Журнал с именами устройств:

08-15 22:54:16.500: INFO/SOD:BT_Receiver(16151): <!>com.nu.art.software.log.Log 69<!> Bluetooth device found: [bbbb:Demo gizmo 2], 5a0204, 6C:0E:0D:77:B0:96
08-15 22:54:16.578: INFO/SOD:BT_Receiver(16151): <!>com.nu.art.software.log.Log 69<!> Bluetooth device found: [aaaa:Demo gizmo 1], 5a020c, 00:26:CC:81:AF:AD
08-15 22:54:33.820: INFO/SOD:BT_Receiver(16151): <!>com.nu.art.software.log.Log 69<!> Bluetooth device found: Zomaar Iemand, 5a0204, 20:21:A5:C0:CF:6F

Другой журнал без названий:

08-15 22:54:34.304: INFO/SOD:BT_Receiver(16151): <!>com.nu.art.software.log.Log 69<!> Bluetooth device found: , 5a0204, 00:26:E2:66:31:30
08-15 22:54:36.882: INFO/SOD:BT_Receiver(16151): <!>com.nu.art.software.log.Log 69<!> Bluetooth device found: , 5a0204, 6C:0E:0D:77:B0:96
08-15 22:54:38.601: INFO/SOD:BT_Receiver(16151): <!>com.nu.art.software.log.Log 69<!> Bluetooth device found: , 5a020c, 00:26:CC:81:AF:AD
08-15 22:54:39.820: INFO/SOD:BT_Receiver(16151): <!>com.nu.art.software.log.Log 69<!> Bluetooth device found: , 520204, 78:CA:04:83:45:CD

Заранее спасибо,

Адам.

1 Ответ

0 голосов
/ 20 мая 2012

Вероятно, это функция, а не ошибка, я нашел обходной путь для этого: если устройство не имеет имени, я не сохраняю его, а если устройство не найдено, снова выполните запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...