2013-07-29 2 views
34

나는 adb를 사용하여 Android 휴대 전화에서 음악을 동기화합니다. 필자는 기존의 음악 디렉토리를 대체 음악 파일로 대체합니다.adb를 사용하여 Android mediastore 새로 고침

Google 음악 플레이어 (및 기타 앱)가 새 노래 및 재생 목록과 제대로 작동하도록 adb을 사용하여 다시 검색 할 수 있기를 바랍니다.

How can I refresh MediaStore on Android?에 따르면 적절한 의도를 방송하여 다시 검색 할 수 있습니다.

adb는 'shell am broadcast'를 제공합니다. 그러면 adb에서 다시 스캔 할 수 있습니다.

는 또한 나는 다시 검색 응용 프로그램 또는 재부팅을 실행할 수 있습니다,하지만 난

내가 ADB 어떤 명령을 실행해야 ADB

에서 다시 검색을 트리거하고 싶습니다? 음악 파일과 재생 목록은 모두/sdcard/music에 있습니다.

답변

51

재검색 응용 프로그램은 미디어 마운트 의도를 사용하여 미디어 스캐너를 시작합니다. am broadcast을 사용하여 동일한 의도를 보낼 수 있습니다.

명령은 없습니다 다음 MEDIA_MOUNTED 의도가 더 이상 비 시스템 애플 리케이션을위한 (포스트 킷캣) 허용

adb shell am broadcast -a android.intent.action.MEDIA_MOUNTED -d file:///sdcard 
+30

나는 다음을 사용했다 :'adb 쉘 방송 - a android.intent.action.MEDIA_MOUNTED -d file : /// mnt/sdcard/Music' – foosion

+0

나는 Kitkat에서 재 스캔이 즉시 일어나지 않는다는 것을 알아 차렸다. 결국에만. 이전 API의 경우인지 기억이 안납니다. 재검사가 즉시 일어날 수있는 방법이 있습니까? – futtetennista

+2

@foosion Android 5.1.1, 6.0 및 6.0.1을 실행하는 Nexus 6에서 작동합니다. –

10

; 대신이 방법을 사용해보십시오.

재귀 적이 아니며 exact_file_name에서 실행해야하므로 좋은 대체 방법은 아닙니다.

adb shell am broadcast \ 
    -a android.intent.action.MEDIA_SCANNER_SCAN_FILE \ 
    -d file:///mnt/sdcard/Music/<exact_file_name> 

당신이 반복적으로 다시 스캔해야하는 경우,이 명령 (그에 따라 수정 경로)를 사용할 수 있습니다 :

adb shell "find /mnt/sdcard/Music/ -exec am broadcast \ 
    -a android.intent.action.MEDIA_SCANNER_SCAN_FILE \ 
    -d file://{} \\;" 

또는 같은

(위의 경우에하는 당신을 위해 작동하지 않습니다) :

adb shell "find /mnt/sdcard/Music/ | while read f; do \ 
    am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE \ 
    -d \"file://${f}\"; done" 
+1

그것은 'android.intent.action.MEDIA_SCANNER_SCAN_FILE' 아니에요. 'android.intent.action.ACTION_MEDIA_SCANNER_SCAN_FILE'. ACTION_ *은 Android 변수의 이름입니다 (https://developer.android.com/reference/android/content/Intent.html#ACTION_MEDIA_SCANNER_SCAN_FILE). – rom1v