일단 그냥 기록용!

안드로이드로 음악플레이어를 만드려면 안드로이드용 음악 라이브러리에서 데이터를 가져와야합니다. 안드로이드는 자체적으로 Song, Artist, Album, Genre 등의 데이터를 sdcard에서 미디어스캔을 해서 데이터베이스를 구축합니다.
이 구축한 것을 자체적인 sqlite에 저장을 하는데, 이것을 앱에서 불러와서 쓸 수 있습니다. 뭐 Song테이블에서 해당 곡에 대한 경로까지 다 저장하고 있어서 불러와서 데이터를 보여줄 수 있는 그런 앱을 만들 수 있습니다.

간단한 예제로 아티스트 목록을 가져오는 것을......


package com.mudchobo.test.musiclibrarytest;

import java.util.ArrayList;
import java.util.List;

import android.app.ListActivity;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.MediaStore;
import android.widget.ArrayAdapter;

public class MusicLibraryTestActivity extends ListActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        List<String> artists = getArtists();
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, artists);
        setListAdapter(adapter);
    }
    
    public List<String> getArtists() {
    	List<String> list = new ArrayList<String>();
		String[] cursorColumns = new String[] {
				MediaStore.Audio.Artists._ID,
				MediaStore.Audio.Artists.ARTIST
		};
		Cursor cursor = (Cursor) getContentResolver().query(
				MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI,
				cursorColumns, null, null, null);
		
		if (cursor == null) {
			return list;
		}
		if (cursor.moveToFirst()) {
			int idColumn = cursor.getColumnIndex(MediaStore.Audio.Artists._ID);
			int artistColumn = cursor.getColumnIndex(MediaStore.Audio.Artists.ARTIST);
			do
			{
				String artist = cursor.getString(artistColumn);
				list.add(artist);
			} while (cursor.moveToNext());
		}
		cursor.close();
		return list;
    }
}



아 귀차나서...초간단 소스를......
getArtists함수를 주목해서.....
getContentResolver().query()함수를 보면 그냥 저 테이블에서 쿼리를 날려서 cursor를 얻어옵니다.
cursor를 돌려가면서 값을 가져오면 아티스트명을 가져오게 됩니다.
그리고 이 아티스트테이블에 보면 칼럼이 4개가 있습니다. 아래사이트에 확인!
http://developer.android.com/reference/android/provider/MediaStore.Audio.ArtistColumns.html
이런 식으로 해서 가져오는데, 막상 보면 sqlite로 쿼리날리는 것과 같습니다. 직접 쿼리를 날려도 가져올 수 있구요^^

그 외의 Song테이블이라던지, Album테이블, Playlist테이블 같은 것도 위와 같은 방법으로 다 가져오고, 삽입하는 것도 가능합니다.
플레이리스트는 MediaStore.Audio.Playlists 이곳 테이블에 insert하면 되고~
이건 플레이르스트 곡목록 관련된 것들 MediaStore.Audio.Playlists.Members
앨범은 MediaStore.Audio.Albums
곡은 MediaStore.Audio.Media
장르는 MediaStore.Audio.Genres
등등~

PS. 근데, 이거 테이블 구조 같은 것을 잘 정리한 곳이 왜 없죠?-_- 내가 못찾는 건가... 안드로이드 사이트 가도 없는 것 같은데....
 
Posted by 머드초보

댓글을 달아 주세요

 
안드로이드에는 음악앱이 엄청 많아요!

Android에서 음악 데이터베이스를 오픈했기 때문에 미디어스캔을 거쳐서 안드로이드db에 앨범, 곡, 아티스트별 db를 자동으로 생성하게 되어서 이걸 안드로이드 개발자가 앱을 개발하면서 접근할 수 있으며, 음악플레이도 쉽게 할 수 있어서 누구나 음악앱을 만들 수 있죠.

음악앱의 관건은 역시 사용자가 편리하게 음악을 들을 수 있는 것과 비주얼적인 요소와 부가적인(가사나 이퀄라이저, 소셜 정도?) 기능이 얼마나 잘 되어있는지로 판단할 수 있겠죠^^

그래서 한번 비교해봤어요~

1. PowerAMP Music Player Beta (현재까진 무료)
아직 베타라서 그런지 무료입니다. 셋팅메뉴에 buy메뉴가 있는걸보니, 나중에 유료로 팔 모양입니다 ㄷㄷ
파워앰프의 장점은 멋진 UI입니다. 하지만 이런 ui말고도 이퀄라이저도 완벽히 제공합니다.
사용자 삽입 이미지

멋진 플레이어UI! 오른쪽은 이퀄라이저 조절!


다른 플레이어는 폴더재생기능이 조금 부족한데, 이 파워앰프는 폴더재생과 라이브러리재생 두가지모드가 모두 존재합니다.
게다가 락화면모드까지 제공을 해서 현재 안드로이드카페에서 가장 인기있는 플레이어로 자리잡았네요!
또 앨범아트가 없으면 자동으로 받아주는 기능도 있는 것 같습니다. 전 앨범아트가 다 있는 MP3를 받아서 뭐 필요 없는 기능이지만^^

사용자 삽입 이미지

폴더재생과 라이브러리재생 제공! 락화면 제공!


한가지 단점이 있다면 역시나 가사-_- MP3 파일안에 있는 가사를 보여주는 기능이라도 있었으면 좋겠는데, 없네요.
디자인:★★★★★ 아오 디자인 만점! 제가 원했던 디자인ㅠㅠ
UI:★★★★ 폴더랑 라이브러리랑 합치기 힘든 형태인데, UI적으로 잘 구현한 것 가틈! 하지만 버튼이 너무 많아서 좀 복잡하긴 함ㅠㅠ
부가기능:★★★ 락스크린은 맘에 들었지만, 가사 때문에 별두개 깜 ㅇㅇ

2. tunewiki (광고버전은 무료, 비광고버전은 유료)

소셜의 기능을 넣은 음악플레이어 ㄷㄷ
일단 폴더재생은 안되구요-_- 그리고 광고가 있습니다.
일반적인 라이브러리재생을 지원합니다.
튠위키의 장점은 엄청난 부가기능이죠. 오히려 플레이어기능은 그지같아도 부가기능하난 최고입니다.

첫번째로 가사재생됩니다. 하지만.. 제목으로 그냥 검색해버리나봅니다. 그래서 가사가 가끔 안맞을 때가 있습니다. 알송은 md5로 검색하는데ㅠㅠ 그리고 외국에서 서비스하는거라 한국노래 가사는 거의 없습니다. 뭐 좀 맘에 안들지만 나름 싱크가사네요^^

두번째론 뮤직맵을 제공합니다. 현재 지도에서 이런 음악을 지역에서 듣고 있다는 것을 보여주는 것이죠. 이건 정말 맘에 드네요~ 게다가 듣고 있는 음악에 대해 유튜브검색을 제공해서 바로 어떤 음악인지 확인할 수 있어요~

세번째론 이 플레이어로 들은 탑50 아티스트 및 곡을 볼 수 있다는 것이죠. 나라별로 차트가 존재해서 현재 우리나라에서 뭐가 대세인지 확실히 보여주네요^^ 게다가 클릭하면 동영상으로 음악을 재생할 수 있어요. 완전 최고네요.

네번째는 트위터나 페이스북 공유할 수 있는건데, 그냥 제목과 아티스트명만 공유하는 거니 뭐 별로 좋은 기능은 아닌 듯. 와 부가기능 많네...

사용자 삽입 이미지

가사나오긴 하는데, 없는게 더많음 ㅇㅇ, 오른쪽은 나라별로 순위에서 본 순위목록!



사용자 삽입 이미지

뮤직맵입니다. 에코브릿지 노래를 누군가 듣고 있는데, 이노래가 궁금하면 바로 유튜브검색으로 확인할 수 있어요~


디자인:★ 디자인 따윈 하지 않은 앱입니다-_-
UI: ★★ 부가기능이 많아서 그런지 UI가 엄청 불편합니다-_- 그래도 나름 많은 기능을 쉽게 해보려고 애를 쓴 흔적이 보이지만, 뭘 찾으려고 해도 참 어렵습니다ㅠ
부가기능: ★★★★★ 부가기능은 그냥 짱먹습니다! 심심할 때 음악에 대한 정보나 사람들은 어떤 음악을 듣는지에 대해서 한번에 확인할 수 있어서 좋습니다~


3. Winamp Beta (무료)
역사가 13년이나 된 Winamp가 안드로이드용으로도 나왔습니다.
폴더재생안되고, 가사안되고, 부가기능도 없고, 아무것도 안됨. 그냥 플레이어임 ㅇㅇ
근데, Wifi를 이용해서 pc와 싱크를 맞추는 기능이 있는 것 같습니다. 근데 제가 아무리 삽질해봐도 안되네요...ㅠㅠ Winamp 5.59beta버전 깔면 된다고 하는데, Device에서 안뜨네요ㅠㅠ
USB로도 된다고 해서 별짓을 다해봤는데 안되네요ㅠㅠ
암튼 이런 싱크기능이 있으면 회사나 집이나 이동이 많은 사람들에게 어디서나 같은 음악을 들을 수 있는 장점이 있겠네요~^^

암튼, 그런 부가기능이 하나있고, 락화면일 제공합니다. 락화면은 좌측상단에 락풀면 또 원래 락화면이 나오네요. 그냥 다 풀리게 해주지-_-
사용자 삽입 이미지

그냥 평범한 플레이어... 우측은 락화면


디자인: ★★ 그냥 무난한 디자인임 ㅇㅇ
UI: ★★★ 두개주려다가 좀 맘에 드는게 다른 플레이어에 볼 수 없는 아코디언형태의 UI가 있음. 저기 home을 누르면 라이브러리가 보이고 아래는 플레이어형태! 하지만 별로 유용해보이진 않음.
부가기능:★★★ 락화면이랑 wifi싱크로 세개줌.

4. Music PlayerPro (유료)
기본 음악앱이랑 비슷한데, 거기에 여러가지 기능을 더 추가해서 유료로 팔고 있는 앱입니다.
음악플레이어 형태는 비슷한데, 거기에 폴더재생기능을 추가했습니다.
그리고 부가기능으로는 가사와 앨범정보, 앨범아트들을 받을 수 있게 되어있습니다. 근데 잘 안되네요-_-
락화면을 제공합니다.
공유기능을 제공하는데, 앨범아트를 공유하면 트위터를 통해 공유할 수 있습니다. 음원을 공유하고 싶으면 email이나 블루투스를 통해 공유가 가능합니다.
사용자 삽입 이미지

큼직한 앨범아트가 맘에드네요! 플레이어화면은 그냥 일반적인 플레이어화면

사용자 삽입 이미지

현재 재생중인 음악에 대해 가사 및 앨범정보 앨범아트를 가져올 수 있고, 해당곡의 앨범아트를 트위터로 공유할 수 있고, 오디오파일을 쉽게 공유할 수 있다-_-


디자인: ★★★ 무난함 ㅇㅇ
UI: ★★★ 무난함 ㅇㅇ
부가기능: ★★★ 무난함 ㅇㅇ
그냥 무난한 플레이어임-_-


휴.... 개인적으로 PowerAMP의 UI와 디자인의 Tunewiki의 부가기능을 합친 쉽고 좋은 ui플레이어가 나왔으면 좋겠네요ㅠㅠ
 
Posted by 머드초보

댓글을 달아 주세요

  1. HONGTAEK 2010.11.26 18:55  댓글주소  수정/삭제  댓글쓰기

    Poweramp 메뉴에서 Info - Lyrics 하시면 가사태그처럼 싱크 맞춰서 보는건 아니지만 파일안에 내장된 가사 볼 수 있습니다