我创建了一个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;
}
答案 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)
}