#android
#Android
Вопрос:
Я написал блок кода для вставки нового изображения в галерею изображений устройства Android с помощью программы Java, пожалуйста, найдите код ниже,
ContentValues values = new ContentValues();
values.put(Images.Media.TITLE, "title");
values.put(Images.Media.BUCKET_ID, "test");
values.put(Images.Media.DESCRIPTION, "test Image taken");
values.put(Images.Media.MIME_TYPE, "image/jpeg");
Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values);
OutputStream outstream;
try {
outstream = getContentResolver().openOutputStream(uri);
receivedBitmap.compress(Bitmap.CompressFormat.JPEG, 70, outstream);
outstream.close();
alertDialog.showMessage("Image Stored Successfully", "Media");
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri));
} catch (Exception e) {
Изображение хранится отлично, но проблема в том, что я не смог просмотреть изображение сразу. Мне нужно выключить и включить его на устройстве, чтобы просмотреть изображение. Кто-нибудь, пожалуйста, может помочь мне решить эту проблему?
Редактировать: Привет, Алеадам, спасибо за воспроизведение, пожалуйста, проверьте мой код ниже
m_pScanner = new MediaScannerConnection(this,
new MediaScannerConnectionClient() {
public void onMediaScannerConnected() {
m_pScanner.scanFile(returnUrl, null /*mimeType*/);
}
public void onScanCompleted(String path, Uri uri) {
if (path.equals(returnUrl)) {
ImageViewActivity.this.runOnUiThread(new Runnable() {
public void run() {
}
});
m_pScanner.disconnect();
}
}
});
m_pScanner.connect();
У меня это не работает, это даже не связано с MediaScanner. пропустил ли я что-то.
Спасибо Rajapandian
Ответ №1:
Media Scanner необходимо повторно просканировать хранилище, чтобы отобразить изображение в галерее.
Найдите MediaScannerConnection API, чтобы это произошло.
MediaScannerConnection предоставляет приложениям возможность передавать недавно созданный или загруженный медиафайл в службу media scanner. Служба сканирования мультимедиа считывает метаданные из файла и добавляет файл поставщику мультимедийного контента. MediaScannerConnectionClient предоставляет интерфейс для службы media scanner для возврата Uri для вновь отсканированного файла клиенту класса MediaScannerConnection.
Ответ №2:
вы можете добавить изображение в mediadb с помощью кода, не вызывая mediascanner, но без абсолютного пути к новому изображению изображение не может быть отображено. Вы должны добавить
values.put(MediaStore.Images.Media.DATA, "/absolute/path/to/image.jpg");
Вызов сканера мультимедиа является более полным способом, потому что сканер мультимедиа также устанавливает другие поля (дата, с, высота, …..)
предупреждение: Если вы используете Android до версии 4.4, при вызове Media scanner всегда запускается сканирование всего устройства, что может занять некоторое время (45 минут на моем планшете Android-4.2 с 16000 фотографиями)