Ios 核心蓝牙框架不扫描所有BLE设备和apple BLE设备
我使用的是核心蓝牙框架,扫描的设备很少,比如micromax A250、micromax A116、三星grand neo、HTC 610和ipod 5s,但我无法扫描三星、HTC和ipod,原因可能是什么?请帮我提前解决谢谢 代码Ios 核心蓝牙框架不扫描所有BLE设备和apple BLE设备,ios,swift,core-bluetooth,Ios,Swift,Core Bluetooth,我使用的是核心蓝牙框架,扫描的设备很少,比如micromax A250、micromax A116、三星grand neo、HTC 610和ipod 5s,但我无法扫描三星、HTC和ipod,原因可能是什么?请帮我提前解决谢谢 代码 // object creation @IBAction func btnScanClicked(sender:UIButton) { var centralManager:CBCentralManager = CBCentralMa
// 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)")
}
}
Android操作系统不支持将手机用作外设,只支持将其用作主机
除非运行相关软件,否则iPhone不会表现为外设。您可以在苹果的开发者门户网站上提供的BTLE_Transfer示例应用程序中找到iOS设备作为外围设备进行广告的示例代码。您知道这些设备是为可扩展服务做广告的吗?你试过app store中的LightBlue应用吗?这些设备都是bluetooth 4.0版,所以一定是BLE设备,我没有试过LightBlue应用,我不知道这是什么。仅仅因为这些设备是BT 4.0并不意味着它们是积极的广告服务。从表面上看,你的代码看起来不错,它正在查找一些设备,所以这就是为什么最好使用另一个应用程序进行检查。LightBlue应用程序是免费的,将显示可移动设备的广告-这不是一个解决方案,只是一个建议的故障排除工具。您需要确认这些设备确实在宣传一项可扩展的服务。一个已知的工作应用程序是一个很好的方法,它可以改写@Paulw11:一个可发现的设备需要做广告才能“被发现”。换句话说,BLE设备会说“嘿,我在这里”,并且BLE设备扫描将能够找到它。但是如果第一个没有说“嘿,我在这儿”,第二个就找不到了。“正确”扫描的LightBlue也可能会发布广告。通过这种方式,您可以检查您的问题是否是因为扫描(有选项),或者是因为其他设备没有广告。如果我使用硬件与iphone通信,那么在硬件中,我还需要运行软件,在该软件的帮助下,我可以通过蓝牙连接这两个设备?我不完全理解您的问题。我对android Bluetooth 4.0协议栈的有限理解是,它们不支持将手机变成外设所需的协议位,因为“外设”是在iOS CoreBluetooth上下文中定义的。有解决办法吗?我不知道。我认为使用备用协议栈是可能的,但我不知道这在实际意义上意味着什么。我的安卓知识有限。