2016-02-19 20 views
5

Ho bisogno di fare un'app che sarà in grado di dire se sono attualmente connesso a un dispositivo Bluetooth classico o meno (in realtà, sarà un Bluetooth dispositivo per auto).Ottieni l'elenco dei dispositivi bluetooth classici collegati (no BLE) [EAAccessoryManager]

Il mio primo passo è quello di dire quali sono i dispositivi Bluetooth classici connessi attualmente. Non posso usare CoreBluetooth perché è solo per LE. Cerco di utilizzare il framework Accessorio esterno.

Ecco il codice (un pulsante avvia il metodo):

- (IBAction)startMethodGetConnected:(id)sender { 
    NSLog(@"button taped"); 
    // Get the number of accessories connected 
    NSUInteger NumberOfAccessoriesConnected = [[EAAccessoryManager sharedAccessoryManager].connectedAccessories count]; 
    //Display the number 
    NSLog(@"number of accessories connected : %d", NumberOfAccessoriesConnected); 
} 

ho provato quando l'iPhone è stato collegato ad una tastiera Bluetooth e anche con un auricolare Bluetooth. In entrambi i casi, la console mostra che il numero è 0.

Come visualizzare il numero corretto?

+0

Sembra che i dispositivi Bluetooth come la tastiera "normale" e la cuffia "normale" non siano elencati in EAAcessoryManager. – Larme

+0

Sì, penso che sia perché il dispositivo deve essere MFI, il che potrebbe non essere il caso dei dispositivi Bluetooth "normali". La soluzione che ho trovato era usare [[AVAudioSession sharedInstance] availableInputs] per ottenere l'input Bluetooth, tuttavia, con questa soluzione, non posso ricevere le notifiche mentre sono in background (dovrei ascoltare la musica per poter ricevere la notifica). – augustin

risposta

1

dalla documentazione mela:.

"Le applicazioni che supportano gli accessori esterni devono essere sicuri di configurare i propri file Info.plist correttamente In particolare, è necessario includere le UISupportedExternalAccessoryProtocols chiave per dichiarare la protocolli hardware specifici supportati dall'applicazione Per ulteriori informazioni su su questo framework, vedere Programmazione degli accessori esterni Argomenti. " here

È necessario aggiungere questa chiave nel file Info.plist con il protocollo del dispositivo MFi.

<key>UISupportedExternalAccessoryProtocols</key> 
<array> 
    <string>your_protocol_name</string> 
</array> 

saluti

1

non si può. Quello che puoi fare è controllare il percorso di riproduzione. Il problema è che le tue macchine vivavoce saranno un auricolareBT. Questo è il codice che uso nella mia app.

// create and set up the audio session 
AVAudioSession* audioSession = [AVAudioSession sharedInstance]; 
[audioSession setDelegate:self]; 
[audioSession setCategory: AVAudioSessionCategoryPlayAndRecord error: nil]; 
[audioSession setActive: YES error: nil]; 

// set up for bluetooth microphone input 
UInt32 allowBluetoothInput = 1; 
OSStatus stat = AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryEnableBluetoothInput, 
             sizeof (allowBluetoothInput), 
             &allowBluetoothInput 
             ); 
NSLog(@"status = %x", stat); // problem if this is not zero 

// check the audio route 
UInt32 size = sizeof(CFStringRef); 
CFStringRef route; 
OSStatus result = AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &size, &route); 
NSLog(@"route = %@", route); 
// if bluetooth headset connected, should be "HeadsetBT" 
// if not connected, will be "ReceiverAndMicrophone" 
Problemi correlati