1

我正在尝试使用存储在 NFC 标签上的一些信息将 Windows Phone 8 手机与通用蓝牙耳机连接起来。至于蓝牙部分,应该可以找到配对的设备,它们是活动的,使用

PeerFinder.AlternateIdentities["Bluetooth:Paired"] = "";
var peers = await PeerFinder.FindAllPeersAsync();

并打电话

等待 socket.ConnectAsync(peer.HostName, serviceName);

连接到特定设备。但是,我无法获得serviceName. 根据文档,设备应该返回广告服务PeerInformation.ServiceName,但我只得到空白字符串。

是否有一些解决方法来获取支持的服务(蓝牙配置文件)的名称?我特别需要使用 A2DP 配置文件连接 bt 设备,但我无法获得(甚至在互联网上找到)正确的服务名称字符串。

4

1 回答 1

1

ConnectAsync打开一个套接字供调用程序发送/接收数据。这不是您想要的,而是您希望操作系统连接到耳机服务。在 Win32 中,BluetoothSetServiceState但我不知道等效的“现代”API。

同样在 Win32 中,可以使用BluetoothAuthenticateDeviceEx这会导致配对,*可能*连接耳机服务——如果由 NFC 通道提供,则使用完整的带外身份验证。同样,我不知道有什么等价物。

我想有可能对任意端点(例如"15")执行 ConnectAsync 会导致配对开始,然后配对完成并启用耳机服务...... ConnectAsync 调用本身将失败,但这是我们感兴趣的副作用在。也许值得一试。

大概您是从 NFC 通讯获取耳机设备的设备地址?如果是这样,您可以创建要在Peter 描述HostName的方法中使用的对象:http: //peterfoot.net/PersistBluetoothAddressesOnWindowsPhone8.aspxConnectAsync

于 2013-01-09T15:13:37.963 回答