일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- gitignore
- lufs
- Service 팁
- android enum
- callstack 출력
- enum performance
- print callstack
- Dagger2란
- Intent String 변환
- 음량표준화
- APK 동적로딩
- java callstack
- RxJava Programming
- android network
- ArrayMap
- 오픈소스라이선스
- RxJava 스터디
- Service관리
- MediaDataSource
- convert string to intent
- corePoolSize
- mitmproxy
- gitignore작성법
- BlockingQueue Capacity
- APK로딩
- 네트워크 디버깅
- HashMap vs ArrayMap
- so파일 동적로딩
- convert Intent to string
- Replaygain
- Today
- Total
일상&개발 로그
미디어 음량 표준화 방법을 찾던 중 ReplayGain이라는 것을 발견 했습니다.실시간 서비스에서 단말자원으로 다시 encoding을 하는 것이 사실상 불가능하기 때문에 볼륨만 사용해서 음량을 조절하는 ReplayGain은 괜찮은 솔루션으로 생각됩니다. 적용 배경여러 미디어를 재생하는 상황에서 각 미디어의 음량이 다르기 때문에 사용자가 수시로 볼륨을 조절해야 하는 불편을 겪게 됨음량이 다른 원인: https://www.seeko.co.kr/zboard4/zboard.php?id=faq&no=7975용어 정의 LUFS(Loudness Unit relative to Full Scale) 인간이 소리를 듣는 행위에 대한 특성들을 수치화 하여 나타내는 단위로, 실제 사람이 '어느정도로 크게 느끼는가'를 표현하는..
Singleton패턴은 하나의 인스턴스만 사용하는 경우 많이 사용되는 패턴입니다. Singleton패턴을 구현하는 방법에는 여러가지가 있는데, 그 중 DCL과 Demand Holder에 대해 알아보겠습니다.(DCL은 "lazy-initialization" 시 locking의 overhead를 줄이기 위해 사용합니다.)기존에 DCL(double-checked-locking)을 많이 사용했었는데, Holder를 사용하면 더 알아보기 쉽게 사용이 가능하다고 합니다. (DCL은 volatile을 사용하지 않으면 Compiler의 reorder에 의해 thread-safe하지 않습니다.) # DCLprivate static volatile Something instance = null; public static ..
Android에서 제공하는 기본 MediaPlayer는 Uri, FilePath, FileDescriptor만 dataSource로 지정 가능 했습니다.또 내부로직이 거의 native로 구현되어 reflection의 여지도 없었습니다.그래서 다운로드와 동시에 재생하는 버퍼링을 외부에서 구현할 수 없었습니다.(setDataSource를 이용하면 MediaPlayer내부에서 버퍼링하긴 합니다.)MarshMallow부터 제공되는 MediaDataSource를 이용하면 외부에서도 버퍼링처럼 동작하도록 구현이 가능합니다.프로그레시브 다운로드 정보 링크(주의: 제공되는 음원포맷이 프로그레시브 다운로드를 지원해야합니다.) @RequiresApi(api = Build.VERSION_CODES.M)public class..