Record input from a Bluetooth headset on iPhone

I have a project in which I have to record the voice coming from the Bluetooth headset and play with the iPhone speaker by default. I searched a lot and got this code.

UInt32 allowBluetoothInput = 1; AudioSessionSetProperty ( kAudioSessionProperty_OverrideCategoryEnableBluetoothInput, sizeof (allowBluetoothInput), &allowBluetoothInput ); 

------------ CODE FOR AUDIO RECORDER START AND STOP ------------

 - (IBAction)Record: (id)sender { UIButton *btn = (UIButton *)sender; if([btn isSelected]) { [audioRecorder stop]; [btn setSelected:NO]; [btn setTitle:@"Start Recording" forState:UIControlStateNormal]; } else { [audioRecorder record]; [btn setSelected:YES]; [btn setTitle:@"Stop Recording" forState:UIControlStateNormal]; } } 

and after that I use avaudiorecorder. It seems to me that something else is missing here.

-------- Code for audio recordings ---------

 NSURL *soundFileURL = [NSURL fileURLWithPath:AUDIO_FILE]; NSDictionary *recordSettings = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:AVAudioQualityMin], AVEncoderAudioQualityKey, [NSNumber numberWithInt:16], AVEncoderBitRateKey, [NSNumber numberWithInt: 2], AVNumberOfChannelsKey, [NSNumber numberWithFloat:44100.0], AVSampleRateKey, nil]; NSError *error = nil; audioRecorder = [[AVAudioRecorder alloc] initWithURL:soundFileURL settings:recordSettings error:&error]; if (error) { NSLog(@"error: %@", [error localizedDescription]); } else { [audioRecorder prepareToRecord]; } 

I think I am missing something else that needs to be added here. I just want Bluetooth audio input garnishing to connect. Any help would be appreciated.

Thanks at Advance !!

+6
source share
2 answers

I just look at your problem and got a good answer that you want to try with the Bellow code: -

 // 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" // now, play a quick sound we put in the bundle (bomb.wav) CFBundleRef mainBundle = CFBundleGetMainBundle(); CFURLRef soundFileURLRef; SystemSoundID soundFileObject; soundFileURLRef = CFBundleCopyResourceURL (mainBundle,CFSTR ("bomb"),CFSTR ("wav"),NULL); NSError *error = nil; audioRecorder = [[AVAudioRecorder alloc] initWithURL:soundFileURLRef settings:recordSettings error:&error]; if (error) { NSLog(@"error: %@", [error localizedDescription]); } else { [audioRecorder prepareToRecord]; } 

Credit is sent

+3
source

add audio session to your code

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

Source: https://habr.com/ru/post/951694/


All Articles