2017-05-26 80 views
1

AVAudioRecorderを使用するiOS向けの簡単な録音アプリケーションを作成しました。これまでのところ、内蔵マイクまたは外付けマイクがヘッドフォンジャックに接続されている場合は、これが動作します。 USB「雷吹き口」を介して接続されているオーディオソースを選択するにはどうすればよいですか?私はCore Audioに飛び込む必要がありますか?外部マイクを選択する方法

具体的には、Apogee Electronics ONE USBオーディオインターフェイスに接続しようとしています。

答えて

2

のcurrentRouteをAVAudioSessionPortDescriptionは、ポートtype.Iは、あなたが特定のマイクを選択することはできませんと信じて識別するのに役立ちますが、あなたが識別して確認することができている現在のルートを特定することができAVAudioSessionの共有インスタンスを使用して、取得availableInputs。戻り値は、AVAudioSessionPortDescriptionsの配列です。ポートタイプのプロパティをチェックして配列を繰り返し、必要なポートタイプと一致するようにしてから、ポートの説明を使用してpreferredInputを設定します。

スウィフト:

let audioSession = AVAudioSession.sharedInstance() 
if let desc = audioSession.availableInputs?.first(where: { (desc) -> Bool in 
    return desc.portType == AVAudioSessionPortUSBAudio 
}){ 
    do{ 
     try audioSession.setPreferredInput(desc) 
    } catch let error{ 
     print(error) 
    } 
} 

のObjective-C:

AVAudioSession *audioSession = [AVAudioSession sharedInstance]; 
NSString *preferredPortType = AVAudioSessionPortUSBAudio; 
for (AVAudioSessionPortDescription *desc in audioSession.availableInputs) { 
    if ([desc.portType isEqualToString: preferredPortType]) { 
     [audioSession setPreferredInput:desc error:nil];    
    } 
} 
+0

スウィートとしてタグ付けされています!私は別の眠れない夜のためにCore Audioを保存します。私はまだそれをテストするためにハードウェアを待っているが、これは私が探していたものだった。ありがとう! – Vegepilot

1

これにはAVFoundationをインポートする必要があります。あなたがAVAudioSessionを使用してセッション

AVAudioSession *session = [AVAudioSession sharedInstance]; 
AVAudioSessionPortDescription *input = [[session.currentRoute.inputs count] ? session.currentRoute.inputs:nil objectAtIndex:0]; 

if ([input.portType isEqualToString:AVAudioSessionPortLineIn]) { 
    NSLog(@"Audio Route: Input Port: LineIn"); 
} 
else if ([input.portType isEqualToString:AVAudioSessionPortBuiltInMic]) { 
    NSLog(@"Audio Route: Input Port: BuiltInMic"); 
} 
else if ([input.portType isEqualToString:AVAudioSessionPortHeadsetMic]) { 
    NSLog(@"Audio Route: Input Port: HeadsetMic"); 
} 
else if ([input.portType isEqualToString:AVAudioSessionPortBluetoothHFP]) { 
    NSLog(@"Audio Route: Input Port: BluetoothHFP"); 
} 
else if ([input.portType isEqualToString:AVAudioSessionPortUSBAudio]) { 
    NSLog(@"Audio Route: Input Port: USBAudio"); 
} 
else if ([input.portType isEqualToString:AVAudioSessionPortCarAudio]) { 
    NSLog(@"Audio Route: Input Port: CarAudio"); 
} 
else { 
    NSLog(@"Audio Input Port: Unknown: %@",input.portType); 
} 
+0

質問はスウィフト3 –

関連する問題