2012-10-19 3 views
0

음향 효과를 위해 주변 음악 (예 : 음악 플레이어 또는 Spotify)을 끄려고 할 때 디스플레이가 지연됩니다. AudioServicesPlaySystemSound를 사용하여 효과 자체를 재생합니다. 다음을 사용하여 세션을 시작하고 백그라운드에서 음악을 재생합니다.AVAudioSession - 효과를 위해 iOS 배경 음량을 줄입니다.

[audioSession setCategory:AVAudioSessionCategoryAmbient error:nil];  

는 그럼 난 내 효과

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; 

위한 방법을 만들기 및 음악을 다시 시작하려면 다음을 사용하여 음악을 중지 재생 범주를 설정

[[AVAudioSession sharedInstance] setActive:NO withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:nil]; 

이 바보 해키 느낌 setCategory : AVAudioSessionCategoryPlayback은 볼륨이 사라지면 디스플레이에 지연을 발생시킵니다.

배경 음악을 음소거하는 올바른 방법은 무엇입니까?

감사, 스티브 모든

+0

Metavirulent 경의 답변을 받아들이지 않는 것이 좋은 이유가 있습니까? – matt

+0

안녕하세요 매트. 그냥 웹 사이트를 따라 잡았고 앱으로 돌아갈 기회가 없었습니다. 다음 주에 살펴보고 수락/업데이트합니다. – Steve

+0

기다려주십시오. 잠깐만 요, 그 코드로 바로 오디오 세션을 다시 구성 할 수 있습니까? 그건 저를 위해 작동하지 않습니다, 내 범주는 세션이 여전히 활성화되어있는 동안 변경되지 않을 싱글 톤처럼 행동합니다. 당신은 세션을 중단 한 다음 새로운 세션을 시작하는 것이 좋습니까? –

답변

2

첫째, 난 당신이 AVAudioSessionCategoryPlayback에 범주를 설정 이유를 모르겠어요. 무음 스위치를 끄거나 전화기를 잠근 채로 사운드 효과를 계속해서 연주해야하는 경우가 아니면 AVAudioSessionCategorySoloAmbient을 대신 선택해야하며, 배경음도 음소거됩니다. 일단 당신이 당신의 음향 효과를 연주하고 나면, 다시 ambiant로 전환 할 수 있습니다.

알람 시계 등으로 인해 재생이 실제로 필요한 경우 재생 범주로 즉시 전환 한 다음 kAudioSessionProperty_OverrideCategoryMixWithOthers 속성을 설정하여 배경 소리가 계속 재생되도록 한 다음 해당 소리를 끄십시오 음소거를 원한다면 먼저 재생 카테고리가 실제로 필요한지 확인해야합니다.

또는 배경 음소거를 음소거하는 대신 그냥 잡아 두는 것을 고려 했습니까? 어쩌면 앰비언트 카테고리에 머물면서 효과를 재생할 때 kAudioSessionProperty_OtherMixableAudioShouldDuck 오디오 세션 속성을 설정하면됩니다 (나중에 리셋). 즉, 효과가있을 때 배경 사운드가 줄어들어 앱이하는 일에 따라 더 바람직 할 수 있습니다.

마지막으로 중요한 것은 AudioServicesPlaySystemSound을 사용한 적이 없으며 믹싱 또는 더킹에서는 작동하지 않을 수 있으므로 AVAudioPlayer으로 전환해야 할 수 있습니다.

+0

응답이 늦어서 죄송합니다. 이것은 많은 도움이되었습니다. – Steve

관련 문제