【问题标题】:Connect WP8 device to a bluetooth headset programmatically以编程方式将 WP8 设备连接到蓝牙耳机
【发布时间】:2013-01-09 10:02:41
【问题描述】:

我正在尝试使用存储在 NFC 标签上的一些信息将 Windows Phone 8 手机与通用蓝牙耳机连接起来。至于蓝牙部分,应该可以使用

找到处于活动状态的配对设备
PeerFinder.AlternateIdentities["Bluetooth:Paired"] = "";
var peers = await PeerFinder.FindAllPeersAsync();

然后打电话

等待 socket.ConnectAsync(peer.HostName, 服务名称);

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

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

【问题讨论】:

    标签: c# .net bluetooth windows-phone-8


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 你是我的救星。 :) 使用 ConnectAsync 到任意端点似乎是有效的。至于NFC:我只能使用存储一些短信息的被动令牌,所以我正在考虑存储蓝牙设备的MAC地址。然后我可以发现配对的设备并连接到具有所需 MAC 地址的设备。
    • 好!乐意效劳。您可以(显然)使用 MAC 地址而无需进行发现...回答编辑 #2。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 2011-07-07
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多