一千萬個為什麽

搜索

如何在iPhone應用程序中切換揚聲器和耳機

我寫了一個使用AVAudioPlayer播放音頻的應用程序。

我已經實現了一個將音頻切換到揚聲器的功能:

UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);    
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);

但是當我嘗試使用它將其切換回耳機時:

UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);    
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_None;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride); 

它仍然通過揚聲器發出。

我找不到任何其他指導音頻的方式。任何人都可以建議我做錯了什麽?

最佳答案

根據 Apple的文檔,使用 kAudioSessionCategory_PlayAndRecord 類別時,僅可使用音頻會話路由覆蓋。

您可以嘗試將類別更改為 kAudioSessionCategory_PlayAndRecord ,並使用 kAudioSessionProperty_OverrideCategoryDe​​faultToSpeaker 屬性鍵將音頻路由到揚聲器。

轉載註明原文: 如何在iPhone應用程序中切換揚聲器和耳機