我希望我的第一个问题是正确的,如果我犯了任何错误,请纠正我。
我想在 Mac OS X 中创建一个允许我连接到蓝牙设备的程序。我从基础开始,检测所有可用的蓝牙外围设备。
我做了两个测试代码,第一个使用 IOBluetooth 库,第二个使用 IOBluetoothUI 和苹果的工具来制作用户界面。
第一个我几乎检测不到设备(AppleTV),第二个检测到 iPhone 5、iPad 2 和 HC-05,但没有检测到 AppleTV。使用第一个代码,我也应该至少能够检测到 HC-05。
有什么区别(除了一个是带有 UI 设施的图书馆)还是我做错了什么?我已经审查了几个问题,但我没有找到任何关于它的信息。
我读到 iPhone 只能被其他苹果产品检测到,是真的吗?
提前谢谢你。
IOBluetooth 示例
标题:
#import <Cocoa/Cocoa.h>
#import <IOBluetooth/IOBluetooth.h>
@interface AppDelegate : NSObject <NSApplicationDelegate, CBCentralManagerDelegate, CBPeripheralDelegate>
{
CBCentralManager *myCentralManager;
CBPeripheral *myPeripheral;
NSMutableArray *Peripherals;
}
@property (assign) IBOutlet NSWindow *window;
@end
身体:
#import "AppDelegate.h"
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
//We initialize the Central Manager
myCentralManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];
}
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
{
NSLog(@"Discovered %@ %@", peripheral, advertisementData);
if (!Peripherals){
Peripherals =[[NSMutableArray alloc] initWithObjects:peripheral, nil];
}else{
[Peripherals addObject:peripheral];
}
NSLog(@"List of devices: %@",Peripherals);
}
- (void)centralManagerDidUpdateState:(CBCentralManager *)central
{
//CBCentralManagerStatePoweredOn = 5;
NSLog(@"Bluetooth state %ld", myCentralManager.state);
if (myCentralManager.state == CBCentralManagerStatePoweredOn){
NSLog(@"Scanning");
[myCentralManager scanForPeripheralsWithServices:nil options:nil];
}
}
@end
IOBluetoothUI 示例
标题:
#import <Cocoa/Cocoa.h>
#import <IOBluetoothUI/IOBluetoothUI.h>
@interface AppDelegate : NSObject <NSApplicationDelegate>{
IBOutlet NSButton *button;
}
@property (assign) IBOutlet NSWindow *window;
- (IBAction)showBrowser:(id)sender;
@end
身体:
#import "AppDelegate.h"
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
}
- (IBAction)showBrowser:(id)sender{
// Creating and initializing the window
IOBluetoothServiceBrowserController *browser = [IOBluetoothServiceBrowserController serviceBrowserController:0];
// launching the window
[browser runModal];
}
@end