Отслеживание изображения после добавления в медиа-сканер (когда пользователь выбирает его в галерее)
У меня есть приложение, которое позволяет пользователям делать снимки со своей камеры, которые сохраняются на SD-карту, и я запускаю на ней медиа-сканер, чтобы они были видны в галерее. Пользователи также могут добавлять изображения из галереи.
Я делаю сжатие изображения перед сохранением на SD-карту. Поэтому, когда пользователь выбирает изображение из галереи, если оно было сжато и записано моим приложением, я хочу избежать его повторного сжатия. Я думал о проверке пути к изображению, чтобы выяснить, было ли изображение из моего приложения, но с URI я получаю строки вроде content://com.android.providers.media.documents/document/image%3A38691
и uri.getPath(), похоже, не имеет пути.
Какие есть варианты, чтобы определить, было ли это изображение из моего приложения? Вот что я могу придумать:
1) Uri uri = Uri.fromFile(file)
: Это, кажется, дает значение file:///storage/emulated/0/Pictures/MyApp/image.jpg
2) Сохраняйте контрольную сумму данных, когда я пишу на SD-карту, и проверяю, когда я вижу новое изображение.
3) Каким-то образом получить URI при запуске медиа-сканера. Пока не разобрался, как это сделать.
ОБНОВЛЕНИЕ: для варианта (3), похоже, я могу использовать MediaScannerConnectionClient
, Это лучший вариант? Сохраните путь к отображению URI в БД и обращайтесь к нему каждый раз, когда пользователь добавляет новое изображение в мое приложение из галереи.