2016-04-14 6 views
3

iOSアプリで音量に問題があります。 setupMic()に電話すると、アプリ全体の音量レベルが大幅に低下します。マイクにアクセスするとアプリ全体の音量が小さくなります

func setupMic() { 
    //make an AudioSession, set it to PlayAndRecord and make it active 
    let audioSession: AVAudioSession = AVAudioSession.sharedInstance() 
    do { 
     try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord) 
    } catch { 
     print("There was an error setting the category") 
    } 
    do { 
     try audioSession.setActive(true) 
    } catch { 
     print("There was an error setting the audio session to active") 
    } 


    //set up the URL for the audio file 
    let documents: AnyObject = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] 
    let str = documents.stringByAppendingPathComponent("recordTest.caf") 
    let url = NSURL.fileURLWithPath(str as String) 

    //make a dictionary to hold the recording setting so we can instantiate our AVAudioRecorder 
    let number = NSNumber(unsignedInt: kAudioFormatAppleIMA4) 
    let recordSettings: [String: AnyObject] = [AVFormatIDKey: number, 
               AVSampleRateKey: 44100.0, 
               AVNumberOfChannelsKey: 2, 
               AVEncoderBitRateKey: 12800, 
               AVLinearPCMBitDepthKey: 16, 
               AVEncoderAudioQualityKey: AVAudioQuality.Min.rawValue] 

    //Instantiate an AVAudioRecorder 
    do { 
     recorder = try AVAudioRecorder(URL: url, settings: recordSettings) 
    } catch { 
     print("There was an error") 
    } 
} 

//This function is called everytime our timer levelTimer fires 
func levelTimerCallback() { 
    recorder.updateMeters() 
    let averagePower = self.recorder.peakPowerForChannel(0) 
    if averagePower > -7 { 
     stopMonitoring() 

     print(recorder.peakPowerForChannel(0)) 
     didCompleteChallenge(true) 
    } 
} 

func startMonitoring() { 
    if self.recorder != nil { 
     recorder.prepareToRecord() 
     recorder.meteringEnabled = true 
     //start recording 
     recorder.record() 
     //instantiate a timer to be called with whatever frequency we want to grab metering values 
     self.levelTimer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: #selector(levelTimerCallback), userInfo: nil, repeats: true) 
    } 
} 

func stopMonitoring() { 
    self.recorder.stop() 
    self.recorder.deleteRecording() 
    self.levelTimer.invalidate() 
} 

私はupdateWith()方法でsetupMic()startMonitoring()を呼び出す:
は、ここで私が使用していたコードです。ビューが再び更新されたときにstopMonitoring()と呼ぶupdateWith() マイクにアクセスすると音量が減少します。助言がありますか?すべての修正?

答えて

3

問題を修正しました。音量は実際には静かになっていませんでしたが、オーディオは実際にイヤホンにルーティングされていました。オーディオセッションのカテゴリオプションを.DefaultToSpeakerに設定するだけでした。 AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord, withOptions: [.DefaultToSpeaker])。とにかくインターネットに感謝します。

+0

私はこのカテゴリを設定しましたが、イヤホンを差し込むと、片側だけが音を出し、反対側が機能していないことを知りました。 –

+0

@Cameronさん、ありがとう、それは私のために働いた –

関連する問題