2016-03-10 123 views
0

我有以下代碼,它可以在使用WP8.1的設備上完美工作,以確定藍牙是否已啓用。當我在Windows Mobile 10設備上運行它時,沒有例外。當藍牙啓用時,該應用程序按預期工作。檢查藍牙是否已啓用

private async Task<bool> CheckBluetoothEnabled() 
{ 
    try 
    { 
     Windows.Networking.Proximity.PeerFinder.Start(); 
     var peers = await Windows.Networking.Proximity.PeerFinder.FindAllPeersAsync(); 
     return true; 
    } 
    catch (Exception ex) 
    { 
     if ((uint)ex.HResult == 0x8007048F) 
     { 
      return false; 
     } 
     return true; 
    } 
} 

該項目的目標是WP8.1。我如何在兩個操作系統上獲得相同的行爲?

+0

你肯定不投?你是否在捕獲物中放置了一個斷點?另外,我並不確定檢查附近的設備是否是檢查藍牙是否啓用的有效方法......如果您檢查附近沒有人使用藍牙設備時,該怎麼辦?即使你有藍牙,它也會返回錯誤。 – user9993

+0

我確實嘗試在catch中設置斷點。我試過這種方式,因爲我發現有一些帖子使用這種方法來檢查它是否被啓用。 – Nfear

回答

1

你也可以爲此使用無線電類。

要檢查是否已啓用藍牙:

public static async Task<bool> GetBluetoothIsEnabledAsync() 
{ 
    var radios = await Radio.GetRadiosAsync(); 
    var bluetoothRadio = radios.FirstOrDefault(radio => radio.Kind == RadioKind.Bluetooth); 
    return bluetoothRadio != null && bluetoothRadio.State == RadioState.On; 
}