[안드로이드] 다른 앱에서 재생 중인 음악의 파일 경로를 가져 올 수 있는 방법이 있을까요?
조회수 2269회
마시멜로부터 권한 관련되서 바뀌어 버린터라.. 지원 중단 된 기존 앱을 이용 할 수 없어 직접 제작 중에 있습니다. 소니에서 제공하는 익스텐션을 통하여 소니 음악 앱에서 음악 정보를 가져오고 싶은데 제조사 예제에서는 getIntent() 사용하더라구요.. 근데 이 방법은 트랙을 넘길 경우에 다음곡을 가져오지 못하고 처음에 가져온 음악만 계속 가져오네요 ㅠㅠ 혹시 방법이 있을까요?
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
뮤직 앱에서 음원이 재생될 때 브로드캐스트 리시버를 통해 현재 재생 중인 음원의 정보를 (다른 앱에서도) 수신 받을 수 있습니다. 브로드캐스트 리시버를 통해 전달된 음원의 정보를 이용해서 폰의 미디어 DB를 쿼리하면 현재 재생 중인 음원의 파일 경로를 가져올 수 있습니다.
조금 더 자세히 설명을 하면 브로드캐스트 리시버로 전달되는 Intent에는 다음과 같은 정보가 담겨있습니다.
action: com.android.music.playstatechanged [duration=287124] [playstate=false] [woodstock=false] [currentContainerName=Stop the Clocks] [artist=Oasis] [domain=0] [currentSongLoaded=true] [preparing=false] [isPodcast=false] [rating=0] [albumId=920369031] [songId=1303] [currentContainerTypeValue=7] [currentContainerId=920369031] [playing=false] [streaming=false] [inErrorState=false] [currentContainerExtData=null] [album=Stop the Clocks] [local=true] [track=Dont Look Back in Anger] [videoId=null] [position=9394] [currentContainerExtId=null] [videoThumbnailUrl=null] [isDoubleclickAd=false] [supportsRating=true] [ListSize=1] [previewPlayType=-1] [trackMetajamId=null] [isSoundAd=false] [isSkipLimitReached=false] [ListPosition=0]
참고로 댬겨있는 정보의 양은 뮤직 앱에 따라 다릅니다. 위 결과는 넥서스 6P의 구글뮤직 앱으로 확인한 결과입니다.
몇몇 뮤직 앱에서 테스트를 해보니 위 정보 중
track
이 타이틀을 의미하고요. 이 track 정보를 이용해서 다음과 같이 미디어 DB를 쿼리해 DATA 컬럼에 담겨있는 정보를 가져오면 음원의 파일 경로를 알 수 있습니다. (예외처리는 되어있지 않으니 참고만 하세요)Cursor cursor = null; try { cursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, MediaStore.Audio.Media.TITLE_KEY + "=?", new String[] {MediaStore.Audio.keyFor(intent.getExtras().getString("track"))}, null); if (cursor != null) { List<String> paths = new ArrayList<>(); while (cursor.moveToNext()) { String path = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA)); paths.add(path); } } } finally { if (cursor != null) { cursor.close(); } }
구글뮤직에서 음원 재생 후 위 코드를 이용하면 재생 중인 음원의 경로를 다음과 같이 가져올 수 있습니다.
[/storage/emulated/0/KakaoTalkDownload/oasis_Dont_Look_Back_in_Anger.mp3]
추가로 뮤직앱들이 전달하는 인텐트의 액션이 제각각이어서 동작하지 않을 수 있으니 관련 사항은. 다음글을 참고하세요.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력