如何使用DeviceInformation.FindAllAsync枚举Windows Phone可见的所有BLE设备?

时间:2016-01-11 23:21:54

标签: c# bluetooth windows-phone-8.1 winrt-xaml

  1. 我有一个代码可以列出Windows Phone 8.1可以检测到的所有BluetoothLE设备(已配对和未配对):

        var devices = await DeviceInformation.FindAllAsync( BluetoothLEDevice.GetDeviceSelector() );
        foreach ( DeviceInformation di in devices )
            {
            BluetoothLEDevice bleDevice = await BluetoothLEDevice.FromIdAsync( di.Id );
    
            Debug.WriteLine( bleDevice.Name );
            }
    
  2. 但是,行:

    var devices = await DeviceInformation.FindAllAsync( BluetoothLEDevice.GetDeviceSelector() );
    

    引发异常。

    任何想法为什么?

    1. 我也试过这段代码:

      var devices = await DeviceInformation.FindAllAsync(GattDeviceService.GetDeviceSelectorFromUuid(GattServiceUuids.GenericAttribute));

    2. 此代码不会引发异常,但会返回0个设备。

      任何想法为什么?

      在这两种情况下,DeviceCapability定义如下:

          <m2:DeviceCapability Name="bluetooth.genericAttributeProfile">
              <m2:Device Id="any">
                  <m2:Function Type="name:genericAttribute"/>
              </m2:Device>
          </m2:DeviceCapability>
      

1 个答案:

答案 0 :(得分:3)

如果您使用的是Windows Phone 8.1,则无法枚举未配对的设备。这在Windows 10 SDK 1511版本中发生了变化