Tôi đã xây dựng một ví dụ tối thiểu để phát hiện các thiết bị Bluetooth lân cận bằng cách sử dụng khung công tác riêng BluetoothManager trong iOS 5.0.Ví dụ BluetoothManManager tối thiểu
Sử dụng một câu trả lời được tìm thấy trong câu hỏi này: Finding generic Bluetooth devices within reach
Dưới đây là phương pháp viewDidLoad của tôi để đăng ký tham gia BluetoothAvailabilityChangedNotification. Tôi cũng đăng ký BluetoothDeviceDiscoveredNotification.
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(bluetoothAvailabilityChanged:)
name:@"BluetoothAvailabilityChangedNotification"
object:nil];
btCont = [BluetoothManager sharedInstance];
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(deviceDiscovered:)
name:@"BluetoothDeviceDiscoveredNotification"
object:nil];
Khi tôi nhận được thông báo thay đổi tính khả dụng của Bluetooth, tôi bật chức năng quét thiết bị, như được nêu trong một trong các câu trả lời trong liên kết nói trên.
- (void)bluetoothAvailabilityChanged:(NSNotification *)notification
{
NSLog(@"BT State: %d", [btCont enabled]);
[btCont setDeviceScanningEnabled:YES];
}
Để hoàn chỉnh, đây là thiết bịPhương pháp thông báo được phát hiện.
- (void)deviceDiscovered:(NSNotification *) notification
{
NSLog(@"Discovered one!");
}
Các bản ghi được sản xuất bằng cách chạy ứng dụng thử nghiệm như sau:
BTM: attaching to BTServer
BTM: posting notification BluetoothAvailabilityChangedNotification
BT State: 1
BTM: setting device scanning enabled
Đáng tiếc, điện thoại không được chọn lên bất kỳ thiết bị Bluetooth nào cả, mặc dù tôi biết có những thiết bị có thể phát hiện gần (được xác minh bằng thiết bị Android).
Một số điều tôi đã cố gắng đã:
- Calling [btCont setPowered: YES]; và đăng ký tham gia thông báo thay đổi trạng thái năng lượng có liên quan, thực hiện setDeviceScanningEnabled: YES trong callback
- Calling [btCont resetDeviceScanning] trước khi gọi setDeviceScanningEnabled
- Gọi scanForConnectableDevices: (unsigned int) arg1; phương pháp, đoán rằng arg1 có thể là một loại giá trị thời gian chờ. Tôi đã thử một loạt các giá trị không thành công.
Bất kỳ suy nghĩ nào cũng sẽ được đánh giá cao. Cảm ơn!
bất kỳ bản cập nhật? bạn có thể giải quyết vấn đề không? Bạn có bất kỳ thông tin nào về scanForConnectableDevicesmethod không? – Mahes