LG G6 Music Player 분석

최근 G6 Pro를 중고로 구매하면서 가지고있던 음원들을 싹 정리하였다.
하는김에 가사도 정리하려고 metaflac을 이용하여 LYRICS 태그를 추가하였음에도 가사가 뜨지 않아 apk를 추출하여 로직을 확인하게 되었다.

아래는 확인한 com.lge.music.MusicUtils 클래스의 getLyrics 메서드

    public static String getLyrics(Context context) {
        if (mPlayType != Defs.PLAY_TYPE_LOCAL) {
            ELog.m111d("It is not Local Type.");
            return null;
        }
        try {
            String contentPath = sService.getPath();
            String lyricsText = "";
            if (contentPath == null) {
                return lyricsText;
            }
            String filePath = getFilePath(context, contentPath);
            String lyricsTemp = null;
            if (!TextUtils.isEmpty(filePath)) {
                String mimeType = getMimeTypeFromData(context, filePath);
                ELog.m111d("mimeType : " + mimeType);
                if ("audio/flac".equals(mimeType) || "audio/vorbis".equals(mimeType) || "application/ogg".equals(mimeType)) {
                    MediaExtractor mediaExtractor = new MediaExtractor();
                    mediaExtractor.setDataSource(filePath);
                    lyricsTemp = mediaExtractor.getTrackFormat(0).getString("unsynced-lyrics");
                } else {
                    Lyrics file = new Lyrics(filePath);
                    if (file != null) {
                        lyricsTemp = file.getLyricsText();
                    }
                }
                ELog.m111d("lyricsTemp : " + lyricsTemp);
            }
            if (TextUtils.isEmpty(lyricsTemp)) {
                return "";
            }
            return lyricsTemp.replace("\n\r", StringUtil.f539LF).concat(StringUtil.f539LF);
        } catch (Exception e) {
            ELog.m114e("Exception:: " + e.toString());
            return null;
        }
    }

flac, vorbis 타입은 안드로이드의 MediaExtractor를 이용하여
lyricsTemp = mediaExtractor.getTrackFormat(0).getString(“unsynced-lyrics“); 를 실행하여 가사를 가져오는것으로 확인된다.

아래 metaflac 명령어를 이용하여 “UNSYNCEDLYRICS” 태그로 추가하니

metaflac --set-tag="UNSYNCEDLYRICS=TEST LYRICS
TEST LYRICS
TEST LYRICS
TEST LYRICS
TEST LYRICS" test.flac

 

가사가 잘 뜬다.

ps

“setprop persist.service.main.enable 1″을 하면 로그를 볼 수 있다.
삼성이나 서드파티앱에서 지원되는 LRC와 같은 싱크가사는 지원되지 않는다. ㅠ

Leave a Reply

Your email address will not be published. Required fields are marked *