我正在尝试使用存储在NFC标签上的一些信息将Windows Phone 8手机与通用蓝牙耳机连接。至于蓝牙部分,应该可以使用
找到有效的配对设备PeerFinder.AlternateIdentities["Bluetooth:Paired"] = "";
var peers = await PeerFinder.FindAllPeersAsync();
并致电
await socket.ConnectAsync(peer.HostName, 服务名);
连接到特殊设备。但是,我无法获得serviceName
。根据文档,设备应该返回PeerInformation.ServiceName
中的广告服务,但我只是得到空字符串。
是否有一些解决方法可以获得支持的服务(蓝牙配置文件)?我特别需要使用A2DP配置文件连接bt设备,但我无法获得(甚至在互联网上找到)正确的服务名称字符串。
答案 0 :(得分:1)
ConnectAsync
打开一个套接字,供调用程序发送/接收数据。这不是你想要的,而是你希望操作系统连接到耳机服务。在Win32中BluetoothSetServiceState
,但我不知道等效的'现代'API。
同样在Win32中,可以使用会导致配对的BluetoothAuthenticateDeviceEx
,和 *可能*连接耳机服务 - 并且如果由NFC提供,则使用完整的带外身份验证渠道。我再一次不知道等价物。
我认为对任意端点(例如"15"
)执行ConnectAsync可能会导致配对启动,然后完成并启用Headset服务...... ConnectAsync调用本身将失败,但它是它的副作用我们感兴趣。值得一试。
据推测,您从NFC通信中获取耳机设备的设备地址?如果是这样,您可以创建要在HostName
中使用的ConnectAsync
对象,正如Peter所描述的那样:http://peterfoot.net/PersistBluetoothAddressesOnWindowsPhone8.aspx