Fix "CBConcreteCentralManager Not Enabled" in Core Bluetooth in MonoTouch

Currently trying to get a sample of Bluteooth.

I am using this sample as a reference - http://developer.apple.com/library/mac/#samplecode/HeartRateMonitor/Listings/HeartRateMonitor_HeartRateMonitorAppDelegate_m.html#//apple_ref/doc_UteMateDateMateDateMateMateDateMateMateRateMateMateDateMateMateDateMateMateDateMateMateDateMateMateDateMateMate_teMateRateMateMate_teMateRateMateMate_ateMate_ateMate_atemate

Bluetooth is enabled on my device.

I tried using code like:

_manager = new CBCentralManager (); _manager.DiscoveredPeripheral += HandleDiscoveredPeripheral; _manager.ConnectedPeripheral += HandleConnectedPeripheral; _manager.DisconnectedPeripheral += HandleDisconnectedPeripheral; 

and I tried to write my own delegate inheriting from CBCentralManagerDelegate

but when I call StartScan

  void StartScan () { var spp = Guid.Parse("00001101-0000-1000-8000-00805f9b34fb"); _manager.ScanForPeripherals(new [] { spp }, null); } 

then I see an error:

 bluetooth1[1210:907] CoreBluetooth[WARNING] <CBConcreteCentralManager: 0x9beea0> is not powered on 

Looking back at this error, I found just a couple of hits:

But none of them are particularly useful ...

I tried to delay the launch until the state changes:

  void HandleUpdatedState (object sender, EventArgs e) { // more to do here.... Console.WriteLine("State updated " + e.ToString()); switch (_manager.State) { case CBCentralManagerState.PoweredOn: _manager.DiscoveredPeripheral += HandleDiscoveredPeripheral; _manager.ConnectedPeripheral += HandleConnectedPeripheral; _manager.DisconnectedPeripheral += HandleDisconnectedPeripheral; StartScan(); break; case CBCentralManagerState.Unauthorized: break; } } 
  • but it is never called.

I also tried to run the xcode sample, but the power is not with me today ...

Does anyone have any idea that CBConcreteCentralManager: 0x9beea0 is not included in the action and how to solve it here?

+1
source share
1 answer

Answer: To surpass this in MonoTouch, I had to use a different constructor:

 CBCentralManager(_delegate, MonoTouch.CoreFoundation.DispatchQueue.CurrentQueue) 

When I switched to what it started to work ...

+4
source

All Articles