Как получить фактический формат адреса Bluetooth из класса BluetoothSerialPortInfo? - PullRequest
1 голос
/ 17 декабря 2009

Я использую класс BluetoothSerialPortInfo, чтобы подключить устройства Bluetooth к моей ежевике. Когда я пытался напечатать значение адреса устройства для каждого устройства, я не вижу или не получаю фактический адрес Bluetooth. Я использую следующий код.

String btAddress = mPortInfo [count] .getDeviceAddress (). ToString ();

Я на самом деле получаю [@ 4d4cd14c из приведенного выше кода. Но фактический адрес Bluetooth моего устройства: 00: 21: 3c: 2d: 1F: 5c.

Если я использую javax.bluetooth, я получаю фактический адрес Bluetooth. Но я хочу использовать BluetoothSerialPortInfo, чтобы установить последовательное соединение с устройством. Поэтому я хочу правильно идентифицировать свое устройство на основе адреса Bluetooth без использования понятного имени устройства.

Как преобразовать необработанный адрес, полученный из метода getDeviceAddress (), в фактический адрес Bluetooth ???

Спасибо

Ответы [ 2 ]

1 голос
/ 13 декабря 2012
byte[] deviceaddress = info.getDeviceAddress();
String _url = ByteArrayUtilities.byteArrayToHex(deviceaddress)

Работа для меня. Наслаждайтесь.

1 голос
/ 17 декабря 2009

getDeviceAddress() возвращает байтовый массив, поэтому вам необходимо преобразовать каждый байт в его шестнадцатеричное представление. Если вы используете 5.0, вы можете использовать ByteArrayUtilities.byteArrayToHex(), но если у вас более низкая версия ОС, вам нужно написать свой собственный код конверсии. Нечто подобное должно работать (найдено в другом посте SO):

public static String toHexString(byte bytes[]) {
    if (bytes == null) {
        return null;
    }

    StringBuffer sb = new StringBuffer();
    for (int iter = 0; iter < bytes.length; iter++) {
        byte high = (byte) ( (bytes[iter] & 0xf0) >> 4);
        byte low =  (byte)   (bytes[iter] & 0x0f);
        sb.append(nibble2char(high));
        sb.append(nibble2char(low));
    }

    return sb.toString();
}

private static char nibble2char(byte b) {
    byte nibble = (byte) (b & 0x0f);
    if (nibble < 10) {
        return (char) ('0' + nibble);
    }
    return (char) ('a' + nibble - 10);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...