核心蓝牙框架不扫描所有BLE设备和苹果BLE设备

问题描述:

我正在使用核心蓝牙框架和扫描很少的设备,如micromax A250,micromax A116,三星宏碁,HTC 610和iPod 5s,那么我无法扫描三星,HTC和iPod可能是什么原因?请提前帮我解决谢谢。核心蓝牙框架不扫描所有BLE设备和苹果BLE设备

代码

// object creation 



@IBAction func btnScanClicked(sender:UIButton) 
    { 

     var centralManager:CBCentralManager = CBCentralManager(delegate: self, queue: nil) 
     self.centralManager = centralManager 
    } 

// method called whenever the device state changes. 

func centralManagerDidUpdateState(central: CBCentralManager!) { 

     if central.state == CBCentralManagerState.PoweredOff 
     { 
      println("bluetooth is off") 
     } 
     else if central.state == CBCentralManagerState.PoweredOn 
     { 
      central.scanForPeripheralsWithServices(nil, options: nil) // scanning devices 
      println("bluetooth is on") 

     } 
     else if central.state == CBCentralManagerState.Unknown 
     { 
      println("bluetooth is unknown") 
     } 
     else if central.state == CBCentralManagerState.Unsupported 
     { 
      println("bluetooth is unsupported") 
     } 
    } 

// method to discover peripherals:- 

func centralManager(central: CBCentralManager!, didDiscoverPeripheral peripheral: CBPeripheral!, advertisementData: [NSObject : AnyObject]!, RSSI: NSNumber!) 

    { 
     if peripheral != nil{ 
       println("discovered \(peripheral.name)") 
     } 
     else 
     { 
      println("No device found") 
     } 
     self.peripheral = peripheral 
     peripheral.delegate = self 
     central!.connectPeripheral(peripheral, options: nil) 
    } 

// method to connect:- 

func centralManager(central: CBCentralManager!, didConnectPeripheral peripheral: CBPeripheral!) 

    { 
     peripheral.delegate = self 
     peripheral.discoverServices(nil) 
     if ((peripheral) != nil) 
     { 
      var state = peripheral.state == CBPeripheralState.Connected ? "yes" : "no" 
      connected = "Connected \(state)" 
      println("connected \(connected)") 
     } 
    } 
+1

您是否知道这些设备正在广告BLE服务?您是否尝试过应用商店中的LightBlue应用? – Paulw11 2014-10-07 06:16:55

+0

这些所有设备都是蓝牙版本4.0,所以它必须是BLE设备,我还没有试过LightBlue应用程序它是我不知道的东西。 – 2014-10-07 06:26:14

+2

仅仅因为这些设备是BT 4.0并不意味着他们正在积极投放广告服务。在表面上你的代码看起来很好,它正在寻找一些设备,所以这是为什么它与另一个应用程序检查是很好的。 LightBlue应用程序是免费的,将显示广告BLE设备 - https://itunes.apple.com/au/app/lightblue-bluetooth-low-energy/id557428110?mt=8 – Paulw11 2014-10-07 06:57:40

Android操作系统不支持使用手机作为一个外围设备,仅作为主站。

除非iPhone正在运行软件,否则iPhone不会像外设一样工作。您可以在其开发人员门户网站上的苹果BTLE_Transfer示例应用程序中找到iOS设备广告的示例代码,作为外设。

+0

If我正在使用硬件与iPhone通信,然后在硬件中,我还需要运行软件与谁的帮助,我可以连接两个设备与蓝牙? – 2014-10-08 04:39:20

+0

我完全不理解你的问题。我对android蓝牙4.0协议栈的理解有限,他们不支持将手机变成外设所需的协议位,因为“外设”是在iOS CoreBluetooth环境中定义的。有没有解决方法?我不知道。我想有可能使用一个替代的协议栈,但这意味着在实际意义上,我不知道。我的Android知识有限。 – CuriousRabbit 2014-10-09 23:18:44