大佬教程收集整理的这篇文章主要介绍了iOS输入麦克风输出蓝牙设备,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
以下是我使用的代码:
- (id) init { self = [super init]; OSStatus status; // Describe audio component AudioComponentDescription desc; desc.componentType = kAudioUnitType_Output; desc.componentSubType = kAudioUnitSubType_RemoteIO; desc.componentFlags = 0; desc.componentFlagsmask = 0; desc.componentManufacturer = kAudioUnitManufacturer_Apple; // Get component AudioComponent inputComponent = AudioComponentFindNext(NULL,&desc); // Get audio units status = AudioComponenTinstanceNew(inputComponent,&audioUnit); checkStatus(status); // Enable IO for recording UInt32 flag = 1; status = AudioUnitSetProperty(audioUnit,kAudioOutputUnitProperty_EnableIO,kAudioUnitScope_Input,kInputBus,&flag,sizeof(flag)); checkStatus(status); // Enable IO for playBACk status = AudioUnitSetProperty(audioUnit,kAudioUnitScope_Output,kOutputBus,sizeof(flag)); checkStatus(status); // Describe format AudioStreamBasicDescription audioFormat; audioFormat.mSampleRate = 44100.00; audioFormat.mFormatID = kAudioFormatLinearPCM; audioFormat.mFormatFlags = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked; audioFormat.mFramesPerPacket = 1; audioFormat.mChAnnelsPerFrame = 1; audioFormat.mBitsPerChAnnel = 16; audioFormat.mBytesPerPacket = 2; audioFormat.mBytesPerFrame = 2; // Apply format status = AudioUnitSetProperty(audioUnit,kAudioUnitProperty_StreamFormat,&audioFormat,sizeof(audioFormat)); checkStatus(status); status = AudioUnitSetProperty(audioUnit,sizeof(audioFormat)); checkStatus(status); // Set input callBACk AURenderCallBACkStruct callBACkStruct; callBACkStruct.inputProc = recordingCallBACk; callBACkStruct.inputProcRefCon = self; status = AudioUnitSetProperty(audioUnit,kAudioOutputUnitProperty_SeTinputCallBACk,kAudioUnitScope_Global,&callBACkStruct,sizeof(callBACkStruct)); checkStatus(status); // Set output callBACk callBACkStruct.inputProc = playBACkCallBACk; callBACkStruct.inputProcRefCon = self; status = AudioUnitSetProperty(audioUnit,kAudioUnitProperty_SetRenderCallBACk,sizeof(callBACkStruct)); checkStatus(status); // Disable buffer alLOCATIOn for the recorder (optional - do this if we want to pass in our own) flag = 0; status = AudioUnitSetProperty(audioUnit,kAudioUnitProperty_ShouldAllocateBuffer,sizeof(flag)); NSLog(@"%ld",(long)status); // Allocate our own buffers (1 chAnnel,16 bits per sample,thus 16 bits per frame,thus 2 bytes per framE). // Practice learns the buffers used contain 512 frames,if this changes it will be fixed in processAudio. tempBuffer.mnumberChAnnels = 1; tempBuffer.mDataByteSize = 512 * 2; tempBuffer.mData = malloc( 512 * 2 ); UInt32 audioCategory = kAudioSessionCategory_PlayAndRecord; status = AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,sizeof(audioCategory),&audioCategory); NSLog(@"%ld",(long)status); UInt32 allowmixing = true; status = AudioSessionSetProperty(kAudioSessionProperty_OverrideCategorymixWithOthers,sizeof(allowmixing),&allowmixing); UInt32 audioRouteOverride = kAudioSessionOutputRoute_BluetoothA2DP; //kAudioSessionOverrideAudioRoute_Speaker; AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverridE),&audioRouteOverridE); status = AudioUniTinitialize(audioUnit); checkStatus(status); return self; }
以上是大佬教程为你收集整理的iOS输入麦克风输出蓝牙设备全部内容,希望文章能够帮你解决iOS输入麦克风输出蓝牙设备所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。