我使用 Tizen 蓝牙 API 通过蓝牙将我的 gear s2 手表(tizen 2.3.2)连接到我的三星 Galaxy s3(android 4.3)。据我了解,使用手机的 MAC 地址,我能够“发现”16 个不同的 UUID,包括 0000111F-0000-1000-8000-00805F9B34FB,即 HFP 服务的 UUID。但是当我尝试连接到该服务时,我没有收到任何响应,无论是successCallback 还是errorCallback。有趣的是,对串口 UUID(1101)做同样的事情,当我的手机接到电话或短信时,我可以连接到服务,甚至可以通过套接字获取消息,没问题。那么,为什么我在尝试连接免提服务(UUID 111F)时没有得到响应?
这是我正在使用的代码:
function getPhoneBatteryLevel()
{
try {
writeLog("Initializing.");
bluetoothAdapter = tizen.bluetooth.getDefaultAdapter();
bluetoothAdapter.getDevice("50:A4:C8:D4:95:E2",onGetDeviceSuccess,onGetDeviceError);
writeLog("Looking for device.");
}
catch (err)
{writeLog("getPhoneBatteryLevel-ERROR:"+err);}
}
function onGetDeviceSuccess(device)
{
try {
if (device.isBonded && device.isConnected){
writeLog("Found connected Device.");
var uuidStr="";
for (var i=0;i<device.uuids.length;i++)
{
if (device.uuids[i].substr(4,4)==="111F")
{
uuidStr = device.uuids[i];
writeLog("Found UUID at "+i+":"+uuidStr);
break;
}
}
if (uuidStr.length>0)
{
device.connectToServiceByUUID(uuidStr, onServiceConnectSuccess, onServiceConnectError);
writeLog("Attempted Connect To Service.");
}
}
else {
writeLog("Device not connected.");
}
}
catch (err)
{writeLog("onGetDeviceSuccess-ERROR:"+err);}
}
function onServiceConnectSuccess(socket)
{
writeLog("Connected to service UUID="+socket.uuid);
}
运行此代码后,我的日志文件如下所示:
Initializing.
Looking for device.
Found connected Device.
Found UUID at 6:0000111F-0000-1000-8000-00805F9B34FB
Attempted Connect To Service.
就是这样......我希望/希望在通过successCallback成功连接时看到“连接到服务UUID = 0000111F-0000-1000-8000-00805F9B34FB”..或者至少通过写入日志的类似错误errorCallback,但我都没有。然而,免提服务似乎正在手机上运行。当然,当手机在我的车里时,免提功能可以正常工作,所以我知道手机支持它。我哪里错了?
更新:经过几次测试,我有了一些额外的线索。我有两台设备:iPhone S5 (iOS 11.2.6) 和 Galaxy S3 (android 4.3)。在“发现”并连接到每个服务之后,我能够遍历服务(uuid)。0x111F 在两者上。这两种设备还有其他几个共同的 uuid。我尝试在两台设备上连接到所有这些常用服务。相对于这两个设备的结果是相同的——在这两个设备上,我都能够连接到一些服务,在其他设备上出现 NotFound 错误,而在我真正感兴趣的设备上,我根本没有收到任何回调。所以,请允许我完善我的问题。我能够连接到我的两台设备共有的以下服务:110A [A2DP]、110C [AVRCP]、112F [PBAP]、1132[MAP]
但是,即使 UUID 0x1200 在两个设备的可用 UUIDS 列表中,对我尝试连接到服务的响应也会调用我的 errorCallBack 例程,并出现“未找到”错误。这发生在两个设备上。为什么在有效 UUID 列表中找不到它?
最令人失望的是(无论如何,对我来说),当我尝试连接到免提配置文件服务 0x111F 时,我仍然没有得到任何响应(没有成功回调和错误回调)。为什么我不会得到响应——成功回调或错误回调?