안드로이드 개발 질문/답변
(글 수 45,052)
안드로이드가 제공해주는 Audio정보를 가져오려면
android.provider.MediaStore.Audio.Media 를 이용하여 가져옵니다.
이 Media에는 아래와 같은 상수 값들이 정의 되어있습니다.
INTERNAL_CONTENT_URI, EXTERNAL_CONTENT_URI, CONTENT_TYPE, DEFAULT_SORT_ORDER ...
하지만 이 클래스는 약간의 기능과 스키마 정보만 가지고 있지 실제 Audio의 ContentProvider은 아닙니다.
(extends ContentProvider로 정의된 클래스가 아니라는 의미입니다.)
여기서 질문은 실제 Audio Contens를 제공하는 Provider 클래스는 어디에 있을까요 ?
android.providerd의 소스 코드 안에는 그런 클래스가 없는 것 같습니다.
혹시 뭐 음악app에서 ContnetProvider을 구현하여 제공하고 이런 방식일까요?
android.provider.MediaStore.Audio.Media 를 이용하여 가져옵니다.
이 Media에는 아래와 같은 상수 값들이 정의 되어있습니다.
INTERNAL_CONTENT_URI, EXTERNAL_CONTENT_URI, CONTENT_TYPE, DEFAULT_SORT_ORDER ...
하지만 이 클래스는 약간의 기능과 스키마 정보만 가지고 있지 실제 Audio의 ContentProvider은 아닙니다.
(extends ContentProvider로 정의된 클래스가 아니라는 의미입니다.)
여기서 질문은 실제 Audio Contens를 제공하는 Provider 클래스는 어디에 있을까요 ?
android.providerd의 소스 코드 안에는 그런 클래스가 없는 것 같습니다.
혹시 뭐 음악app에서 ContnetProvider을 구현하여 제공하고 이런 방식일까요?

2010.03.19 19:12:10
앗~! 검색어 지원 감사합니다. ㅎㅎㅎ
안드로이드 펍에 자료가 있네요. ㅎㅎㅎ
OS소드를 받아서 보면 되겠습니다.
감사합니다.
그래서 안드로이드 OS 소스에서 찾아 보았더니
OS소스/packages/providers/MediaProvider 에서 관련 부분을 찾았답니다.
위 폴더의 AndroidManifest.xml 파일을 보면,
<application android:process="android.process.media"
android:label="@string/app_label">
<provider android:name="MediaProvider"
android:authorities="media"
android:multiprocess="false" />
2010.03.22 12:48:36
기본적으로 application 은 data/data 에 자기 db를 저장하는대 본인만 접근가능하게 되어있거든요.. 하지만 공유할 수 있도록 provider 형식으로 제공하는겁니다. resolver 로 uri 를 사용해 검색해서 접근가능하여 사용하도록 되어 있습니다.. provider 를 사용자가 만들 수도 있지만 위에서 언급하신것은 android에서 제공하는겁니다. 안드로이드 개발자들도 필요에 의해서 공유db를 생성시킨거죠 ㅋ꼭 공유라고 생각하실것없이.. 중복되는 데이터저장을 피하고 싶어서 그런게 1차 목적입니다. media 데이터를 여기 저기 어플에서 사용한다면 한군데에서 저장하고 공유시키면 어러번 중복저장을 피할수 있죠.. 어차피 기본서 하나정도는 가지고 계실텐데.. 기본서에 충실히 참고 하시면 이해가 빠르실거 같고요..없으시다면 이참에 기본서 하나는 구매 하시는게 좋을거 같네요..ㅎ (개인적으로 "알짜만 골라 배우는 안드로이드" 와 리토마이어 아저씨가 쓴책 추천합니다.)



