Почему BluetoothDevice иногда является строкой? - PullRequest
0 голосов
/ 02 марта 2012

Какой тип BluetoothDevice ???В этом коде устройство работает как строка (содержащая UUID физического устройства), когда я использую его в Log () для LogCat.Но я не могу присвоить его строковой переменной (Eclipse жалуется, что он имеет тип BluetoothDevice).

String action = intent.getAction();
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
Log.v(TAG, "Device="+device); //DISPLAYS "Device=58:17:1C:EB:E3:A8" IN LOGCAT
String d = device; // TYPE MISMATCH!
  • Почему объект BluetoothDevice отображается его UUID в LogCat, как если бы он былstring?

EDIT: сбой getName () был вызван тем, что BluetoothDevice возвратил нулевой первый раз, потому что я получаю ACTION_DISCOVERY_STARTED от BluetoothAdapter.Так что это решено.Тайна того, почему BluetoothDevice иногда является String, остается.

Ответы [ 2 ]

2 голосов
/ 02 марта 2012

Причина, которую он показывает в журнале, состоит в том, что он реализует toString() (больше информации здесь ), что позволяет автоматически преобразовывать его в строку для ведения журнала.

Если вы хотите, чтобы аппаратный адрес в качестве строки использовался в вашей логике, вы должны вместо этого использовать device.getAddress, что в формате, который с меньшей вероятностью изменится.

0 голосов
/ 11 мая 2013

device, который вы получаете, является не строкой, а экземпляром BluetoothDevice.
Если вы хотите имя этого устройства Bluetooth, вы можете использовать:

device.getName(); //returns the string representation of this bluetooth

Интересно, что когда вы используете ArrayList<BluetoothDevice> в качестве одного из входов ListView, вывод в списке - это MAC-адрес, а не UUID, как вы предлагали.

Если вы хотите UUID, вы можете использовать:

uuid = device.getUuids()[0].getUuid();
...