Проблема с сохранением изображения в MediaStore в Android

#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 фотографиями)