나는 사용자가 그릴 수있는 앱을 가지고 있으며 그 그림을 외부 저장 장치에 .png 파일로 '내보냄'(있는 경우)합니다. 파일을 외부로 복사하는 PNG를 생성하면 매력처럼 작동하지만 다소 독특한 문제가 발생합니다. 내보내기 후에 사용자가 내 파일 (이 경우 2.2를 실행하는 Samsung Tab)을 통해 이미지를 탐색하면 .png 파일을 볼 수 있지만 파일을 열면 약 10 초 동안 검정색이됩니다. 그런 다음 그들은 이미지를 볼뿐만 아니라 이미지가 사용자의 '갤러리'앱에도 표시되지 않습니다.Android : Media Scanner가 실행되지 않는 문제
사용자가 USB를 통해 기기를 컴퓨터에 연결하거나 기기를 재부팅하면 내 파일에서 아무런 문제없이 이미지에 액세스 할 수 있으며 해당 시점부터 '갤러리'에 표시되지만 다시 새로 추가 된 파일은 장치를 다시 순환/연결할 때까지 동일한 문제가 발생합니다.
내 생각에이 문제는 미디어 스캐너와 관련이 있어야한다는 생각이 들었습니다. (적어도 '갤러리'문제의 경우에는 가장 확실합니다.)
그래서 Api 8+를 타겟팅하면서 정적 인 MediaScannerConnection.scanFile()
메서드를 사용하여 OS를 다시 스캔하고 갤러리에 이미지를 추가하는 등의 작업을 시도하고 있습니다. 또한 이상한 지연 문제가 해결되기를 기대합니다. 이미지를 열 때. 내가 이미지를 수출하고, 따라서 위의 호출을 실행할 때
MediaScannerConnection.scanFile(
context,
new String[] { "/mnt/sdcard/MyApp" },
null,
null
);
로그 캣이 나에게 다음과 같은 항목을 제공합니다 : 그래서
DEBUG/MediaScannerService(2567): IMediaScannerService.scanFile: /mnt/sdcard/MyApp mimeType: null
DEBUG/MediaScannerService(2567): onStartCommand : intent - Intent { cmp=com.android.providers.media/.MediaScannerService (has extras) }
DEBUG/MediaScannerService(2567): onStartCommand : flags [0], startId [1]
DEBUG/MediaScannerService(2567): ServiceHandler:handleMessage volume[null], filePath[/mnt/sdcard/MyApp]
DEBUG/MediaProvider(2567): getSdSerial() sd state = removed
INFO/Database(2567): sqlite returned: error code = 17, msg = prepared statement aborts at 43: [SELECT DISTINCT sd_serial FROM images WHERE sd_serial LIKE 'external_0x%']
ERROR/MediaProvider(2567): removeMediaDBData called
DEBUG/MediaScanner(2567): prescan enter: path - /mnt/sdcard/MyApp
DEBUG/MediaScanner(2567): prescan return
을 MediaScanner는 정확한 위치를 점점 것 같습니다, 여기 내 코드는 , 그러나 정확하고 실패한 SD 카드를 찾지 못하고 있습니다. 삼성 탭에는 비 SD 외부 저장소가 내장되어 있으며, Android는 Environment.getExternalStorageDirectory()
을 통해 액세스 권한을 부여합니다. SD가 아닌 저장소를 검사하려면 어떻게해야합니까?
아이디어 진행 방법은 무엇입니까?
폴