Blackberry 如何从BluetoothSerialPortInfo类获取蓝牙地址的实际格式?

Blackberry 如何从BluetoothSerialPortInfo类获取蓝牙地址的实际格式?,blackberry,bluetooth,Blackberry,Bluetooth,我正在使用BluetoothSerialPortInfo类将蓝牙设备与我的黑莓手机配对。当我试图打印每个设备的设备地址值时,我看不到或得不到实际的蓝牙地址。我正在使用以下代码 字符串btAddress=mPortInfo[count].getDeviceAddress().toString() 我实际上从上面的代码中得到了[@4d4cd14c。但是我的设备的实际蓝牙地址是:00:21:3c:2d:1F:5c 如果我使用javax.bluetooth,我会得到实际的蓝牙地址。但我想使用Blueto

我正在使用BluetoothSerialPortInfo类将蓝牙设备与我的黑莓手机配对。当我试图打印每个设备的设备地址值时,我看不到或得不到实际的蓝牙地址。我正在使用以下代码

字符串btAddress=mPortInfo[count].getDeviceAddress().toString()

我实际上从上面的代码中得到了[@4d4cd14c。但是我的设备的实际蓝牙地址是:00:21:3c:2d:1F:5c

如果我使用javax.bluetooth,我会得到实际的蓝牙地址。但我想使用BluetoothSerialPortInfo建立与设备的串行连接。因此,我想根据蓝牙地址正确识别我的设备,而不使用设备的友好名称

如何将从getDeviceAddress()方法获取的原始地址转换为实际的蓝牙地址

谢谢,

getDeviceAddress()
返回一个字节数组,因此您需要将每个字节转换为十六进制表示形式。如果您使用的是5.0,则可以使用
ByteArrayUtilities.ByteArrayOhex()
,但如果您使用的是较低版本的操作系统,则需要编写自己的转换代码。类似的代码应该可以工作(在另一个SO帖子上找到):

公共静态字符串到十六进制字符串(字节[]){
如果(字节==null){
返回null;
}
StringBuffer sb=新的StringBuffer();
for(int-iter=0;iter>4);
字节低=(字节)(字节[iter]&0x0f);
某人追加(一小口(高));
sb.追加(一小口(低));
}
使某人返回字符串();
}
私有静态字符nibble2char(字节b){
字节半字节=(字节)(b&0x0f);
if(半字节<10){
返回(字符)('0'+半字节);
}
返回(字符)('a'+半字节-10);
}
为我工作。 享受

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);
}
byte[] deviceaddress = info.getDeviceAddress();
String _url = ByteArrayUtilities.byteArrayToHex(deviceaddress)