2015-02-06 70 views
-2

試圖只爲我的應用程序使用builtIn iPhone MIC。不兼容的指針類型發送「NSString」類型的參數'AVAudioSessionPortDescription *

- (BOOL)setPreferredInput:(AVAudioSessionPortDescription *)inPort error:(NSError **)outError NS_AVAILABLE_IOS(7_0); 
{ 
NSError* audioError = nil; 
AVAudioSession* myAudioSession = [AVAudioSession sharedInstance]; 
[myAudioSession setPreferredInput:AVAudioSessionPortBuiltInMic error:&audioError];  
+0

看起來你可能在某處遺漏了一個右括號'}'。此外,AVAudioSessionPortBuiltInMic的類型是根據蘋果的「NSString *」:https://developer.apple.com/library/prerelease/ios/documentation/AVFoundation/Reference/AVAudioSessionPortDescription_class/index.html#//apple_ref/ DOC/constant_group/Input_Port_Types。我認爲解決方案是掃描可用端口的數組,並找到'type'屬性等於'AVAudioSessionPortBuiltInMic'的那個。 – 2015-02-06 20:01:22

回答

1

AVAudioSessionPortBuiltInMicNSString,不是AVAudioSessionPortDescription。爲了獲取設備上可用端口的描述符,請使用[AVAudioSession availableInputs]

for (AVAudioSessionPortDescription *input in [AVAudioSession availableInputs]) { 
    if ([[input portType] isEqualToString:AVAudioSessionPortBuiltInMic]) { 
    NSError *error = nil; 
    [AVAudioSession setPreferredInput:input error:&error]; 
    } 
} 
+0

打敗我吧。 ;) – 2015-02-06 19:42:23

+0

'@property(只讀)NSArray * availableInputs NS_AVAILABLE_IOS(7_0); ([AVAudioSessionPortInputs]中的AVAudioSessionPortDescription *輸入){ if([[inputportType] isEqualToString:AVAudioSessionPortBuiltInMic]){ NSError * error = nil; [AVAudioSession setPreferredInput:input error:&error]; } }'越來越意想不到@「在程序和預期的標識符錯誤。 – LegendaryAman 2015-02-06 20:26:39

+0

我不確定你爲什麼在你的方法中擁有@屬性(只讀)......,但似乎你可能對Objective-C編程缺乏基本的理解。 – 2015-02-06 20:31:34

相關問題