2012-03-19 17 views
5

iOS 5.0'da BluetoothManager özel çerçevesini kullanarak yakındaki Bluetooth cihazlarını tespit etmek için en az bir örnek yapıyorum. Finding generic Bluetooth devices within reachMinimal iOS BluetoothManager Örnek

İşte BluetoothAvailabilityChangedNotification kayıt benim viewDidLoad bir yöntem vardır: Bu sorunun bulunan bir cevap kullanma

. Ayrıca BluetoothDeviceDiscoveredNotification için de kayıt yapıyorum. Ben Bluetooth kullanılabilirliği bildirimi değişti aldığınızda

[[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]; 

, ben yukarıda belirtilen linkte cevapların birinde belirtildiği gibi aygıt tarama, etkin ayarlayın.

- (void)bluetoothAvailabilityChanged:(NSNotification *)notification 
{ 
    NSLog(@"BT State: %d", [btCont enabled]); 
    [btCont setDeviceScanningEnabled:YES]; 
} 

Tamlık için, işte cihazDiscovered bildirim yöntemi. aşağıdaki gibi test uygulaması çalıştırarak üretilen

- (void)deviceDiscovered:(NSNotification *) notification 
{ 
    NSLog(@"Discovered one!"); 
} 

günlükleri:

BTM: attaching to BTServer 
BTM: posting notification BluetoothAvailabilityChangedNotification 
BT State: 1 
BTM: setting device scanning enabled 

Maalesef telefonla ben yakın keşfedilebilir cihazlar vardır biliyor olsa bile, hiç bir Bluetooth cihazlarını cevap vermiyor (bir Android cihazı kullanılarak doğrulandı).

Bazı şeyler zaten denedi:

  • çağrılması [btCont setPowered: EVET]; ile ilişkili güç durum değişikliği bildirimi için kayıt, setDeviceScanningEnabled olarak çalıştırma: EVET geri arama
  • arama olarak [btCont resetDeviceScanning] önce setDeviceScanningEnabled çağrı scanForConnectableDevices çağrı
  • için: (işaretsiz int) ARG1; yöntemi, arg1'in bir çeşit zaman aşımı değeri olabileceğini tahmin eder. Başarısız bir şekilde çeşitli değerler denedim.

Herhangi bir düşünce çok takdir edilecektir. Teşekkürler!

+0

herhangi bir güncelleme? Sorunu çözebildin mi? scanForConnectableDevicesmethod hakkında herhangi bir bilginiz var mı? – Mahes

cevap

2

Bildiğim kadarıyla, OS yöneticisi sonuçları filtreledikten sonra bluetooth yöneticisi listeyi alır. Sadece genel kulaklık cihazlarını değil, yalnızca yakındaki kulaklıklı cihazları edineceksiniz.

Eğer scanForServices kullanmak zorunda

:

// start scan 
    [btManager setDeviceScanningEnabled:YES]; 
    [btManager scanForServices:0xFFFFFFFF];