안드로이드 개발 정보
(글 수 568)
안녕하세요.
안드로이드 초보입니다.
제가 쓰는것중에 틀린것이 있을 수도 있으니까요.
잘못 설명하는 곳이 있으면 지적 부탁드립니다.
안드로이드의 Music 소스중에 Musicutils.java 를 보다보니까,
이상한 점이 있더군요.
import android.media.MediaScanner;
안드로이드 리퍼런스에서 공개되지 않은 MediaScanner 이란 패키지를 사용합니다 ㅡ.ㅡ
Musicutils.java 소스의 일부를 보면,
private static Bitmap getArtworkFromFile(Context context, Uri uri, int albumid)
{
.. 중간 생략 ....
if (uri != null) {
MediaScanner scanner = new MediaScanner(context);
ParcelFileDescriptor pfd = null;
try {
pfd = context.getContentResolver().openFileDescriptor(uri, "r");
if (pfd != null) {
FileDescriptor fd = pfd.getFileDescriptor();
art = scanner.extractAlbumArt(fd);
}
} catch (IOException ex) {
} catch (SecurityException ex) {
} finally {
try {
if (pfd != null) {
pfd.close();
}
} catch (IOException ex) {
}
}
}
......
}
저 패키지가 공개되지 않아서 우리는 사용이 불가능 한거 같은데요.
기본 Music에서는 이것을 사용하여서 만들었더군요.
그런데 왜 공개되지도 않은 패키지를 쓰는지 소스를 보다 보니까
주석으로 이렇게 적혀 있더군요.
// The album art thumbnail does not actually exist. Maybe the user deleted it, or
// maybe it never existed to begin with.
내용인즉 사용자가 지웠거나 이전에 존재하지 않았던 경우에
MediaScanner 를 이용하셔 생성하고 직접 추가해 주더군요.
위 주석과 같이 사용자가 지워버린다 던가 하는 일을 언제나 존재 할 수가 있으므로,
우리가 Music 같은 APP를 만들어서 사용해도 똑같은 상황에 처할 수 있습니다.
기본 Music을 이런경우에 대비하여 공개안된 패키지를 사용하여 앨범아트 만들어 쓰면서 이 패키지를 공개하지 않으면,
안드로이드가 주장하는 평등한 APP 가 될 수가 없는 것이 아닌가 생각이 듭니다.
저 부분이 다음 SDK에서 공개될지 모르겠으나,
현재로서는 다름 방법을 찾던가, 혹은 안 나오면 안 나오는데로 사용하는 수 밖에 없을 것이 아닌가 합니다.
감사합니다.
안드로이드 초보입니다.
제가 쓰는것중에 틀린것이 있을 수도 있으니까요.
잘못 설명하는 곳이 있으면 지적 부탁드립니다.
안드로이드의 Music 소스중에 Musicutils.java 를 보다보니까,
이상한 점이 있더군요.
import android.media.MediaScanner;
안드로이드 리퍼런스에서 공개되지 않은 MediaScanner 이란 패키지를 사용합니다 ㅡ.ㅡ
Musicutils.java 소스의 일부를 보면,
private static Bitmap getArtworkFromFile(Context context, Uri uri, int albumid)
{
.. 중간 생략 ....
if (uri != null) {
MediaScanner scanner = new MediaScanner(context);
ParcelFileDescriptor pfd = null;
try {
pfd = context.getContentResolver().openFileDescriptor(uri, "r");
if (pfd != null) {
FileDescriptor fd = pfd.getFileDescriptor();
art = scanner.extractAlbumArt(fd);
}
} catch (IOException ex) {
} catch (SecurityException ex) {
} finally {
try {
if (pfd != null) {
pfd.close();
}
} catch (IOException ex) {
}
}
}
......
}
저 패키지가 공개되지 않아서 우리는 사용이 불가능 한거 같은데요.
기본 Music에서는 이것을 사용하여서 만들었더군요.
그런데 왜 공개되지도 않은 패키지를 쓰는지 소스를 보다 보니까
주석으로 이렇게 적혀 있더군요.
// The album art thumbnail does not actually exist. Maybe the user deleted it, or
// maybe it never existed to begin with.
내용인즉 사용자가 지웠거나 이전에 존재하지 않았던 경우에
MediaScanner 를 이용하셔 생성하고 직접 추가해 주더군요.
위 주석과 같이 사용자가 지워버린다 던가 하는 일을 언제나 존재 할 수가 있으므로,
우리가 Music 같은 APP를 만들어서 사용해도 똑같은 상황에 처할 수 있습니다.
기본 Music을 이런경우에 대비하여 공개안된 패키지를 사용하여 앨범아트 만들어 쓰면서 이 패키지를 공개하지 않으면,
안드로이드가 주장하는 평등한 APP 가 될 수가 없는 것이 아닌가 생각이 듭니다.
저 부분이 다음 SDK에서 공개될지 모르겠으나,
현재로서는 다름 방법을 찾던가, 혹은 안 나오면 안 나오는데로 사용하는 수 밖에 없을 것이 아닌가 합니다.
감사합니다.
제 댓글을 보실지 모르겟네요..
저도 이제 막 music을 파보고 있는 참이라 검색하다보니까 이 글이 검색되었네요 ;;
근데 music의 소스를 구할수가 없습니다 ㅠ
소스 있으시면 kimlh2@nate.com 로 좀 쏴주세요 ㅠ