iOS6 पर + आप AVAudioSession गुण
CGFloat gain = sender.value;
NSError* error;
self.audioSession = [AVAudioSession sharedInstance];
if (self.audioSession.isInputGainSettable) {
BOOL success = [self.audioSession setInputGain:gain
error:&error];
if (!success){} //error handling
} else {
NSLog(@"ios6 - cannot set input gain");
}
iOS5 आप प्राप्त कर सकते हैं पर उपयोग कर सकते हैं/AudioSession कार्यों का उपयोग कर ऑडियो इनपुट लाभ गुण सेट
UInt32 ui32propSize = sizeof(UInt32);
UInt32 f32propSize = sizeof(Float32);
UInt32 inputGainAvailable = 0;
Float32 inputGain = sender.value;
OSStatus err =
AudioSessionGetProperty(kAudioSessionProperty_InputGainAvailable
, &ui32propSize
, &inputGainAvailable);
if (inputGainAvailable) {
OSStatus err =
AudioSessionSetProperty(kAudioSessionProperty_InputGainScalar
, sizeof(inputGain)
, &inputGain);
} else {
NSLog(@"ios5 - cannot set input gain");
}
OSStatus err =
AudioSessionGetProperty(kAudioSessionProperty_InputGainScalar
, &f32propSize
, &inputGain);
NSLog(@"inputGain: %0.2f",inputGain);
(छोड़े गए त्रुटि प्रबंधन)
आप इनपुट लाभ को नियंत्रित करने में रुचि रखते हैं के रूप में, आप भी AVAudioSessionModeMeasurement
(iOS5 + 6) करने के लिए ऑडियो सत्र मोड सेट करके स्वत: लाभ नियंत्रण अक्षम कर सकते हैं
[self.audioSession setMode:AVAudioSessionModeMeasurement
error:nil];
NSLog(@"mode:%@",self.audioSession.mode);
ये सेटिंग्स काफी हार्डवेयर-विशिष्ट हैं, इसलिए उपलब्धता नहीं किया जा सकता ग्रहण किया। उदाहरण के लिए, मैं iPhone3GS/ios6 और iPhone4S/ios5.1 पर लाभ को बदल सकता हूं, लेकिन ipadMini/ios6.1 पर नहीं। मैं आईफोन 3 जी और आईपैड मिनी पर एजीसी अक्षम कर सकता हूं, लेकिन आईफोन 4 एस नहीं।
समाधान के लिए धन्यवाद - क्या आपको पता है कि कोड में मुझे यह कहां सेट करना चाहिए? क्या यह वैश्विक माइक्रोफोन लाभ स्तर या केवल एक विशिष्ट रिकॉर्डिंग स्ट्रीम के लिए नियंत्रित करता है? –
@ डेविडडौडेलिन - यह आपके ऐप के लिए माइक गेन लेवल सेट करता है, और सेटिंग्स तब तक आपके ऐप के पूरे रनटाइम के लिए होती रहती हैं जब तक कि आप उन्हें बदल नहीं देते। उन्हें सेट करने के लिए उपयुक्त स्थान ऐप प्रतिनिधि या नियंत्रक की 'init' विधि होगी। मैं आमतौर पर एक ऑडियो कंट्रोलर ऑब्जेक्ट करता हूं और वहां ऑडियो सत्र स्थापित करता हूं। जब आपका ऐप पृष्ठभूमि होता है तो व्यवहार आपकी सेटिंग्स और अन्य ऐप्स के उन पर निर्भर करता है जो हार्डवेयर नियंत्रण के लिए प्रतिस्पर्धा कर सकते हैं। – foundry
बहुत बहुत धन्यवाद! –