2010-07-25 44 views
1

我正在開發一個應用程序,只需要簡單地將音頻以下屬性:iPhone AudioSession性能

  1. 可以記錄,並在同一時間
  2. 播放聲音可以混合與其他應用程序,例如音頻輸出當,當它在

插入我用下面的代碼耳機是不是在耳機

  • 音頻輸出插在音箱的iPod
  • 音頻輸出。

    AVAudioSession *audioSession = [AVAudioSession sharedInstance]; 
    NSError *audioSessionError; 
    [audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:&audioSessionError]; 
    
    UInt32 mix = 1; 
    AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof(mix), &mix); 
    
    UInt32 route = kAudioSessionOverrideAudioRoute_Speaker; 
    AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof(route), &route); 
    
    [audioSession setActive:YES error:&audioSessionError]; 
    

    但是,我可以達到1-3,但在4時失敗。當耳機插入時,音頻仍然通過揚聲器來。然後我嘗試設置kAudioSessionProperty_OverrideCategoryDefaultToSpeaker而不是kAudioSessionProperty_OverrideAudioRoute,但是這導致暫停iPod而不是混合兩個音頻。任何人都可以請幫忙指出上述代碼有什麼問題嗎?

    感謝您的任何幫助。

  • +0

    你試過收聽音頻路徑更改通知,並設置kAudioSessionOverrideAudioRoute_Speaker只有當耳機沒有插入,和取消它時,它在插入? – lucius 2010-07-25 18:31:24

    +0

    進行這項工作需要進口什麼? – 2011-01-15 12:11:11

    回答

    0

    我想這:

    UInt32 route = kAudioSessionOverrideAudioRoute_Speaker; 
    AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof(route), &route); 
    

    具體是指使用揚聲器。默認操作(插入時使用耳機)應該是:

    UInt32 route = kAudioSessionOverrideAudioRoute_None;