我正在开发和应用,我需要显示设备的蓝牙信息。我终于在蓝牙mac地址方面取得了一些成功,但无法获得设备名称。有没有办法通过一些公共API合法获取设备名称?
NSString*btMacAddr = @"Bt ";
BOOL success;
struct ifaddrs * addrs;
const struct ifaddrs * cursor;
const struct sockaddr_dl * dlAddr;
const uint8_t * base;
success = getifaddrs(&addrs) == 0;
if (success) {
cursor = addrs;
while (cursor != NULL) {
if ( (cursor->ifa_addr->sa_family == AF_LINK)
&& (((const struct sockaddr_dl *) cursor->ifa_addr)->sdl_type == IFT_ETHER)
&& (strcmp(cursor->ifa_name, "en0") == 0)) {
dlAddr = (const struct sockaddr_dl *) cursor->ifa_addr;
base = (const uint8_t *) &dlAddr->sdl_data[dlAddr->sdl_nlen];
if (dlAddr->sdl_alen == 6) {
//fprintf(stderr, ">>> WIFI MAC ADDRESS: %02x:%02x:%02x:%02x:%02x:%02x\n", base[0], base[1], base[2], base[3], base[4], base[5]);
//fprintf(stderr, ">>> IPHONE BLUETOOTH MAC ADDRESS: %02x:%02x:%02x:%02x:%02x:%02x\n", base[0], base[1], base[2], base[3], base[4], base[5]+1);
btMacAddr = [NSString stringWithFormat:@"Mac Address : %02x : %02x : %02x : %02x : %02x : %02x", base[0], base[1], base[2], base[3], base[4], base[5]+1];
} else {
fprintf(stderr, "ERROR - len is not 6");
}
}
cursor = cursor->ifa_next;
}
freeifaddrs(addrs);
}
答案 0 :(得分:1)
然后不是这样的: [[UIDevice currentDevice] name];
这给出了iOS设备的名称,如“Henriks iPhone”
答案 1 :(得分:0)
在文档中没有明确说明,但在CBCentralManagerDelegate方法中,例如centralManager:didDiscoverPeripheral:advertisementData:RSSI:,传递给委托的参数之一是CBPeripheral。
有趣的是,Apple没有列出任何CBPeripheral的官方文档,但是如果你查看CBPeripheral.h的头文件,看起来你可能会提取一个“_name
”字段在那里(对我自己来说,当我做“peripheral.name
”时,编译器没有抱怨,好像它已经定义了一些属性)
但话又说回来,为了验证我的回答,我尝试下载Apple's CoreBluetooth Temperature Sensor sample code并在我的iPhone 4S上使用“[centralManager scanForPeripheralsWithServices:nil options:nil];
”命令运行它并没有太大成功(生成“CoreBluetooth[WARNING] <CBConcreteCentralManager: 0x2087fc00> is not powered on
”即使蓝牙在设备设置中明确设置为 on ,也会出现错误。
无论如何,我希望我的暗示可能会帮助你。