检查iOS上的Xamarin Forms中的蓝牙状态

时间:2017-05-31 09:02:53

标签: ios xamarin bluetooth

我创建了一个xamarin表单应用程序。我想检查一下iOS中蓝牙的状态。我使用了以下代码,但if (state == CBCentralManagerState.PoweredOn)正在返回Unknown。它没有提供蓝牙状态的实际状态。有人可以帮我弄清楚出了什么问题吗?感谢。

此方法的引用位于:https://developer.xamarin.com/api/type/MonoMac.CoreBluetooth.CBCentralManagerState/

   private CBCentralManagerState state;

    public bool CheckBluetoothStatus()
    {
        bool status;
        if (state == CBCentralManagerState.PoweredOn)
        {
            status=  true;
        }
        else
        {
            status =  false;
        }
        return status;   

    }

2 个答案:

答案 0 :(得分:2)

apple documentation中所述,您需要在实际使用之前初始化CBCentralManager。

如果您查看Xamarin Documentation的CBCentralManager,它们会为您提供所需构建器的列表。从底部实施第二个

CBCentralManager(CBCentralManagerDelegate, DispatchQueue, CBCentralInitOptions)

但在实现之前,您需要实现CBCentralManagerDelegate。它可以像这个一样简单

public class CbCentralDelegate : CBCentralManagerDelegate
{
    public override void UpdatedState(CBCentralManager central)
    {
        if(central.State == CBCentralManagerState.PoweredOn)
        {
            System.Console.WriteLine("Powered On");
        }
    }
}

现在您已经实现了委托,您应该可以从CBCentralManager中获取蓝牙的状态,如下所示

var bluetoothManager = new CBCentralManager(new CbCentralDelegate(),DispatchQueue.DefaultGlobalQueue,
                                                        new CBCentralInitOptions{ShowPowerAlert = true});

return bluetoothManager.State == CBCentralManagerState.PoweredOn;

我知道已经有一段时间了,但是希望这会对你有帮助。(或其他任何人)

答案 1 :(得分:0)

您应该在CBCentralManager

中下载UpdatedState事件
_mgr = new CBCentralManager();
_mgr.UpdatedState += CBCentralManager_UpdatedState;
void CBCentralManager_UpdatedState(object sender, EventArgs e){
    switch (_mgr.State)
}