je vois la question déjà posée ici:AVAudioRecorder/AVAudioSession avec Apple AirPod
AirPods not working as an input source for Voice Recorder App
J'ai vérifié avec ce fil, mais pas de réponse. Mais, est-ce que quelqu'un sait si/pourquoi AVAudioRecorder pourrait ne pas être en mesure d'utiliser les AirPods comme périphérique d'entrée pour l'enregistrement audio dans une application? J'ai l'enregistrement audio fonctionnant par l'intermédiaire des micros intégrés aussi bien qu'avec d'autres appareils de BT (Beats, chose de téléphone de haut-parleur de BT, etc.) mais en travaillant avec les AirPods je suis incapable de capturer l'acoustique.
En outre au moment d'enregistrer, je suis en boucle sur les entrées disponibles et en forçant l'entrée à l'appareil BT (voir le code ci-dessous) dans ce cas les AirPods. Encore une fois, fonctionne pour tous les autres appareils BT, sauf les AirPods.
Pensées? Toute orientation sur ce que nous faisons mal ici serait géniale. Cela a été exaspérant.
NSError *error;
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryRecord withOptions:audioSession.categoryOptions|AVAudioSessionCategoryOptionAllowBluetooth
error:&error];
[audioSession setActive:YES error:nil];
NSLog(@"Data sources: %@", [audioSession availableInputs]);
// Data sources: ("<AVAudioSessionPortDescription: 0x1706071b0, type = MicrophoneBuiltIn; name = iPhone Microphone; UID = Built-In Microphone; selectedDataSource = Bottom>",
"<AVAudioSessionPortDescription: 0x170611bd0, type = BluetoothHFP; name = Dan\U2019s AirPods; UID = 50:32:37:E0:90:37-tsco; selectedDataSource = (null)>"
for (AVAudioSessionPortDescription *desc in [audioSession availableInputs]){
NSLog(@"Port desc: %@", desc.portType);
// Loop: 1) Port desc: MicrophoneBuiltIn
// 2) Port desc: BluetoothHFP
if (desc.portType == AVAudioSessionPortBluetoothHFP) {
NSLog(@"Trying to change preferred input");
NSError *error;
BOOL didSet = [audioSession setPreferredInput:desc error:&error];
NSString *didSetString = didSet ? @"True" : @"False";
NSLog(@"Post change preferred input: %@, error: %@", didSetString, error);
// Post change preferred input: True, error: (null)
}
}
Merci. Je vais regarder à travers cela et voir si ça aide. – djneely