Запуск сканирования медиа на файлы, созданные в фоновом режиме - PullRequest
0 голосов
/ 02 марта 2019

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

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

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

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

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

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

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

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

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

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

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

...