일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 가상화
- 삼성전자 소프트웨어멤버십 SSM
- Bidirectional Associative Memory
- 물걸레자동세척로봇청소기
- 파이썬
- Friendship
- 인공지능
- Neural Network
- 물걸레로봇청소기추천
- 나르왈프레오
- 하이퍼바이저
- 동아리
- 멤버십
- Google App Engine
- 삼성소프트웨어멤버십
- hopfield network
- 신경망
- SSM
- BAM
- 갤럭시탭S8울트라
- NarwalFreo
- 구글 앱 엔진
- 빅데이터
- 고려대학교
- 삼성
- 증강현실
- 패턴인식
- Python
- 신경회로망
- 패턴 인식
- Today
- Total
정보공간_1
[7기 강북 전소현] 안드로이드 오디오 스트림 타입 본문
안녕하세요. 강북멤버십 23-1기 전소현입니다.
이번 게시물에서는 지난 게시물에서 이야기했던 안드로이드 오디오 스트림의 종류에 대해 더 자세히 알아보겠습니다.
[이 게시물은 안드로이드 KitKat(4.4.2)을 기준으로 직접 분석한 내용을 정리한 것입니다.]
음악 재생과 같이 소리를 출력하는 어플리케이션을 만들 때 우리는 오디오 리소스들의 재생과 관련된 API인 AudioTrack을 사용하게 됩니다.
AudioTrack 클래스의 생성자인 AudioTrack(int streamType, int sampleRateInHz, int channelConfig, int audioFormat, int bufferSizeInBytes, int mode)의 매개변수들은 다음과 같습니다.
생성자의 첫 번째 매개변수인 streamType은 어플리케이션에서 출력시킬 오디오 리소스의 종류에 해당하는 스트림 타입을 의미하고, AudioManager.STREAM_MUSIC과 같은 형태로 설정해 줄 수 있습니다.
안드로이드 오디오 시스템은 오디오 스트림 타입을 기준으로 볼륨 제어, 출력 장치 결정 등과 같은 다양한 오디오 제어를 수행하므로 어플리케이션에서 소리를 출력하고자 하는 용도에 맞춰 오디오 스트림 타입을 설정해주어야 합니다.
안드로이드 오디오 시스템에는 총 10가지의 오디오 스트림 타입이 존재하고, 출력되는 모든 오디오 트랙은 소리의 종류에 따라 그에 해당하는 오디오 스트림 타입이 결정됩니다.
예를 들어, 뮤직 어플리케이션과 같이 음악 소리를 출력하기 위한 어플리케이션에서는 뮤직 스트림 타입(STREAM_MUSIC)을, 버튼을 누를 때 나는 효과음은 시스템 스트림 타입(STREAM_SYSTEM)을 사용합니다.
아래는 안드로이드의 오디오 스트림 타입을 정리한 표입니다.
이러한 안드로이드 오디오 스트림 타입들은 안드로이드 프레임워크 소스의 frameworks/base/media/java/android/media와 hardware/libhardware_legacy/include/hardware_legacy 하위의 소스파일들에 정의되어 있습니다.
AudioManager.java를 보면 각각의 오디오 스트림 타입에 해당하는 변수가 선언되어 있고, 이 값들은 AudioSystem.java에 선언되어 고유의 값을 갖고 있습니다.
또, AudioSystemLegacy.h에서 역시 오디오 스트림 타입들이 정의되어 있고, AudioSystem.java에서와 동일한 값들을 갖고 있습니다. (아래 그림 참고)
AudioSystem.java
AudioSystemLegacy.h
AudioSystem.java와 AudioSystemLegacy.h을 보면 NUM_STREAM_TYPES이라는 변수가 있는데 이는 안드로이드의 오디오 스트림 타입의 개수를 의미합니다.
기존 안드로이드에는 10개의 오디오 스트림 타입이 존재하므로 아래 그림과 같이 10으로 초기화 되어 있는 것을 확인할 수 있습니다.
안드로이드 오디오 시스템은 위에서 설명한 것과 같이 오디오 스트림 타입을 관리하고 이에 맞춰 다양한 오디오 기능들을 제어합니다.
따라서 위에서 언급한 소스파일들을 분석하여 수정한다면 기존 10개의 오디오 스트림 타입 외에 특정 종류의 소리를 위한 오디오 스트림 타입을 새롭게 추가할 수 있습니다.
위 내용은 아래 자료를 참고하여 작성하였습니다.
- 안드로이드 미디어 프레임워크 (김태연 외 4명 공저)
'IT 놀이터 > Elite Member Tech & Talk' 카테고리의 다른 글
[7기 강남 이학경] 2장 : STM32CubeMX 프로젝트 생성 방법 (0) | 2015.04.09 |
---|---|
[7기 신촌 박진상] 기계학습 #2 - 파라미터 조정에 의한 학습 (0) | 2015.04.05 |
[7기 수원 박성진] 아마존 웹 서비스 EC2 시작하기 (1) | 2015.04.01 |
[7기 강남 이학경] 1장 : STM32CubeMX의 개념과 설치방법 (0) | 2015.03.25 |
[7기 대구 유용수] IO Completion Port 1장.TCP/IP의 구조 (0) | 2015.03.11 |