2017-05-31 6 views
1

Ich habe eine Xamarin-Formulare-Anwendung erstellt. Ich möchte überprüfen, ob der Status des Bluetooth in iOS. Ich habe den folgenden Code verwendet, aber die if (state == CBCentralManagerState.PoweredOn) gibt mir Unknown zurück. Es liefert nicht den tatsächlichen Status des Bluetooth-Status. Könnte mir bitte jemand helfen, herauszufinden, was falsch ist? Vielen Dank.Überprüfen Sie den Bluetooth-Status in Xamarin Forms auf iOS

Die Referenz dieser Methode ist hier: 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

Was ist Ihr Gerät? Was ist die Betriebssystemversion? Haben Sie das CBCentralManager-Objekt erstellt? Warten Sie außerdem, bis https://developer.xamarin.com/api/member/MonoMac.CoreBluetooth.CBCentralManagerDelegate.UpdatedState/p/MonoMac.CoreBluetooth.CBCentralManager/ aufgerufen wird, um es zu überprüfen. – Larme

+0

@Larme Es ist ein iPhone 6s. – jones

+0

Haben Sie das CBCentralManager-Objekt erstellt? – Larme

Antwort

0

Sie sollten die UpdatedState Veranstaltung in CBCentralManager

_mgr = new CBCentralManager(); 
_mgr.UpdatedState += CBCentralManager_UpdatedState; 
void CBCentralManager_UpdatedState(object sender, EventArgs e){ 
    switch (_mgr.State) 
} 
+0

Könnten Sie bitte ein ausführlicheres Beispiel geben? – jones

1

SUBSCRIPT Wie in apple documentation hier beschrieben, müssen Sie CBCentralManager initialisieren, bevor Sie können tatsächlich benutze es. Wenn Sie Xamarin Documentation für CBCentralManager betrachten, erhalten Sie eine Liste aller benötigten Konstruktoren. Implementieren Sie die 2. ein von der Unterseite

CBCentralManager(CBCentralManagerDelegate, DispatchQueue, CBCentralInitOptions) 

Aber bevor Sie diese implementieren, müssen Sie die CBCentralManagerDelegate implementieren. Es könnte so einfach sein, wie dies

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

Jetzt, wo Sie die Delegaten implementiert haben, sollten Sie in der Lage sein, den Zustand der Bluetooth vom CBCentralManager wie diese

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

return bluetoothManager.State == CBCentralManagerState.PoweredOn; 

Ich weiß, es ist schon ein holen während das wurde gefragt, aber hoffentlich wird dies Ihnen helfen. (Oder jemand anderes)

Verwandte Themen