Запуск сканирования мультимедиа файлов, созданных фоновым процессом

Как указано в этом ответе, я отражаю вывод logcat моего приложения с помощью этого вызова:

Runtime.getRuntime().exec("logcat -f " + absolutePathToLogFile);

Это вызовет процесс logcat, который дублирует записи журнала в указанный мной файл в режиме реального времени. Процесс никогда не завершается сам по себе, но завершается, если процесс приложения завершается или уничтожается.

Чтобы полученный файл был виден через MTP (без необходимости перезагрузки), мне нужно запустить на нем сканирование носителя.

Если я запускаю сканирование мультимедиа сразу после запуска процесса logcat, файл отображается, но клиенты MTP будут видеть только то содержимое, которое было там, когда имело место сканирование. Все, что добавлено позже, отсутствует при доступе к файлу через MTP, хотя оно видно при доступе к файлу через adb.

Поэтому мне нужно было бы запустить сканирование носителя после записи последнего события в файл, т.е. после того, как процесс logcat был убит. Насколько я понимаю, я не могу сделать это из своего приложения, так как Android убивает процессы приложения без предупреждения и не давая приложениям возможности отреагировать. То есть я не могу запустить сканирование мультимедиа, когда мое приложение вот-вот будет уничтожено, так как приложению не сообщат, что это вот-вот произойдет. Я также не могу реагировать на смерть процесса logcat, так как к тому времени мое приложение уже не будет работать.

(Я понимаю, что мне также может понадобиться отсканировать файл перед этим, например, если я хочу получить доступ к файлу, пока он все еще записывается, но это другая история.)

Я знаю, что сканирование носителя может быть запущено с помощью команды оболочки, такой как

am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file:///path/to/file

но понятия не имею, как заставить это работать после завершения процесса logcat.

Могу ли я каким-либо образом сказать, что система запускает сканирование носителя в файле после завершения процесса logcat?


person user149408    schedule 02.03.2019    source источник