logo

English

이곳의 프로그래밍관련 정보와 소스는 마음대로 활용하셔도 좋습니다. 다만 쓰시기 전에 통보 정도는 해주시는 것이 예의 일것 같습니다. 질문이나 오류 수정은 siseong@gmail.com 으로 주세요. 감사합니다.

[iOS] Audio Session Setting

by digipine posted Nov 26, 2021
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print

Category / Mode / CategoryOptions 세 가지 범주를 소개하겠다. OS에게 앱에서 오디오를 어떻게 쓸지 알려주기 위한 방법들이며, 새로이 설정할 때에는 명시적으로 오디오세션을 deactive 후 다시 active 해주어야 한다. 주요한 것들 위주로 간단히 설명하겠다.

 

Category

경험 상 많이 쓰이는 것들

  • playback: 무음모드일때도 소리 남
  • playAndRecord: 녹음과 재생 같이 쓸 때 사용. 소리 input 필요할때 쓴다. 무음모드일때도 소리 남
  • 위 카테고리 2개는 default가 noxmixable이며 (다른 앱과 소리 동시에 들리지 않음) 옵션을 통해 mixable하게 만들 수 있다

그 외의 것들

  • ambient: for play along. mixable. 무음모드일 때 소리 안 남
  • soloAmbient: default. nonmixable. 무음모드일 때 소리 안 남
  • record: 오디오 녹음만을 위함 (재생 불가)
  • multiRoute: 여러 루트로 오디오 출력 시 사용

아래는 간단한 비교 테이블이다. 원하는 스펙을 찾아 사용하면 된다.

 

Category 폰 무음모드 or Lock 상태에서 다른 앱 오디오와 상호작용 input(recording)/output(playback)
ambient play X mix output only
soloAmbient play X interrupt output only
playback play O interrupt (옵션 추가로 mix 가능) output only
record record O interrupt input only
playAndRecord play O record O interrupt (옵션 추가로 mix 가능) input & output
multiRoute play O interrupt input & output

 

Mode

경험 상 많이 쓰이는 것들

  • default: 웬만하면 이걸로 하면 된다
  • moviePlayback: 영상 재생 시
  • videoRecording: 영상 녹화 시
  • spokenAudio: for continuous spoken audio. (ex) 팟캐스트 앱은 이 모드를 사용
  • voicePrompt: 카플레이 등을 위한 모드. for text-to-speech
    • (추천 호환 옵션: duckOthers & interruptSpokenAudioAndMixWithOthers)

참고사항

  • Category와 Mode가 호환이 안 되는 쌍이 존재함. 그럴 때는 setting 이 아예 실패하므로 주의
    • (ex) videoRecording은 record, playAndRecord 카테고리가 아니면 사용할 수 없다
    • (ex) playAndRecord + .voicePrompt 는 같이 사용할 수 없다

 

CategoryOptions

경험 상 많이 쓰이는 것들

  • mixWithOthers: 다른 앱의 소리와 우리 앱 소리가 함께 들릴 수 있게 하는 옵션.
  • duckOthers: mixWithOthers 를 기본으로 채택하면서 +우리 앱에서 소리가 날 때는 다른 앱 소리를 살짝 죽이는 옵션.
  • interruptSpokenAudioAndMixWithOthers: mixWithOthers를 기본으로 채택하면서 + 다른 앱에서 spokenAudio 가 출력될 때에만 interrupt 걸고 우리 앱이 소리를 독차지 (*라디오, 팟캐스트 등을 생각하면 됨)
    • <참고> duckOthers와 함께 사용하게 되면 다른 앱에서 Media 종류의 Audio 를 재생할때는 duckOthers 의 설정을 따르고, 다른 앱에서 spokenAudio가 출력되고 있을 때에만 우리 앱이 interrupt 를 걸어버린다
  • allowBluetoothA2DP: 블루투스 디바이스 지원을 위한 옵션
    • playback 카테고리에서는 기본제공이지만 playAndRecord 카테고리에서는 기본이 아니기 때문에 따로 셋팅해주어야 함
  • defaultToSpeaker: 연결된 오디오 receiver가 따로 있을때(ex: 아이폰 built-in receiver, 이어폰, 카오디오 등), 그쪽이 아닌 폰 speaker로 오디오를 전달하게 해주는 옵션
    • playAndRecord 카테고리에서만 유효한 옵션
    • 이 옵션과 같은 역할을 하는 AVAudioSession.sharedInstance().overrideOutputAudioPort(.speaker) 라는 일회성 함수도 있다



출처: https://wlaxhrl.tistory.com/92 [찜토끼의 Swift 블로그]


List of Articles
No. Subject Author Date Views
55 [Swift 3] HTTP Request 사용하기, 클래스 소스코드 및 사용법 digipine 2017.11.02 9668
54 OSX - Screen Serial Terminal - OSX에서 시리얼 터미널 사용하기 digipine 2017.11.03 6868
53 [iOS/Objective-C] __weak, __block 사용법 digipine 2021.02.16 5508
52 [Swift 3] TCPIP Socket 통신 클래스 소스 코드 및 사용법 digipine 2017.11.02 4647
51 [Objective-C] NSOperation과 NSOperationQueue를 사용하는 방법 - 설명 및 예제 엉뚱도마뱀 2018.03.14 4191
50 [iOS/macOS] 사설 인증서를 사용한 SSL HTTPS 통신 시 우회처리 digipine 2021.07.06 2959
49 [macOS] Sandbox 정책 극복기 Accessing Security Scoped Resource 1 file digipine 2017.11.02 1776
48 [Objective C] NSString 앞뒤 공백 문자 및 줄바꿈 문자 제거 digipine 2017.11.02 1655
47 iOS - Objective - C, URL 인코딩과 디코딩 digipine 2017.11.01 1653
46 [swfit 4] 스위프트 Swift 동시성 동기화 정리 엉뚱도마뱀 2018.09.06 1315
45 [MacOS, Swift] 스크롤뷰, NSScrollView 사용법 엉뚱도마뱀 2018.11.01 1264
44 OSX 사파리 최신 버전 폰트 변경하기 file digipine 2017.11.03 1224
43 iOS - UITextField의 Placeholder Color 색 변경하기 file digipine 2017.11.02 1152
42 [iOS, MacOS] Singleton 싱글톤 패턴 사용하기 2 digipine 2017.11.02 1080
41 MacOS mysql 비밀번호 분실 시 재설정하기 digipine 2017.11.14 1028
40 [iOS, MacOS] NSNotification, NSNotificationCenter 사용법 digipine 2017.11.02 1026
39 [swift 4] 변경 사항 정리 file 엉뚱도마뱀 2018.07.23 1019
38 iOS - Objective C 정규식 사용법 2 digipine 2017.11.01 961
37 iOS - BLE 장치용 ANCS Library for ANCS digipine 2017.11.02 949
36 iOS - Openssl 빌드하기 digipine 2017.11.01 946
Board Pagination Prev 1 2 3 Next
/ 3