Android - обновить отображение папки после захвата изображения

1

Я новичок в андроиде. Теперь я выполняю функцию захвата изображения, используя:

Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE );

Проблема заключается в том, что после того, как я закрою свою фотографию, новое снятое фото не отображается на странице изображения.

Кто-нибудь знает, где есть код, который может помочь мне обновить мой Android или любой шаг, который мне нужно сделать, чтобы моя страница отображения изображений могла быть обновлена после того, как я захвачу новую фотографию?

Любая помощь будет очень признательна и вам большое спасибо.

Обновленный ответ: я использую это, возможно, это может помочь другим:

                mScanner = new MediaScannerConnection(
                Camera.this,
                new MediaScannerConnection.MediaScannerConnectionClient() {
                    public void onMediaScannerConnected() {
                        mScanner.scanFile(outputFileUri.getPath(), null /* mimeType */);
                    }

                    public void onScanCompleted(String path, Uri uri) {
                        //we can use the uri, to get the newly added image, but it will return path to full sized image
                        //e.g. content://media/external/images/media/7
                        //we can also update this path by replacing media by thumbnail to get the thumbnail
                        //because thumbnail path would be like content://media/external/images/thumbnail/7
                        //But the thumbnail is created after some delay by Android OS
                        //So you may not get the thumbnail. This is why I started new UI thread
                        //and it'll only run after the current thread completed.
                        if (path.equals(outputFileUri.getPath())) {
                            mScanner.disconnect();
                            //we need to create new UI thread because, we can't update our mail thread from here
                            //Both the thread will run one by one, see documentation of android  
                            Camera.this
                            .runOnUiThread(new Runnable() {
                                public void run() {

                                }
                            });
                        }
                    }
                });
        mScanner.connect();
  • 0
    Я получил ответ:
Теги:
android-intent
android-widget
android-camera

3 ответа

4
Лучший ответ

Салли, ты имел в виду, что после того, как вы сделаете фотографию, вы не видите ее в галерее или файловом менеджере, когда смотрите на каталог, в котором вы знаете файл?

Если это так, вам нужно запустить медиа-сканер следующим образом:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri));

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

  • 0
    да. хорошая идея. Я постараюсь написать код, используя это. Спасибо
  • 0
    папка не отображается в галерее
1

вы должны сделать снимок с помощью нижеприведенного кода ::

Calendar cal = Calendar.getInstance();
File file = new File(Environment.getExternalStorageDirectory(),(cal.getTimeInMillis()+".jpg"));
if(!file.exists()){
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
selectedImageUri = Uri.fromFile(file);
Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
i.putExtra(MediaStore.EXTRA_OUTPUT, selectedImageUri);
startActivityForResult(i, CAMERA_RESULT);

и по результату деятельности вы можете использовать этот код:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case CAMERA_RESULT:
if (resultCode == RESULT_OK) {
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContext().getContentResolver(), selectedImageUri);
imageView.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
}
}
}
  • 0
    Привет, спасибо за ваш ответ. на самом деле я могу сфотографировать и сохранить его в моей SDCard. Проблема в том, что у меня есть страница, на которой будут отображаться изображения из этого каталога, после того как я сделаю новую фотографию, но на странице не отображается новая захваченная фотография. Надеюсь, что я проясню свой вопрос, извините, если мое объяснение не ясно. :)
  • 0
    Что это такое: _activity.getContentResolver () Выдает ошибку об этом.
0

Вы можете обновить свою деятельность с помощью:

Intent myIntent = getIntent();
finish();
startActivity(myIntent);
  • 0
    Привет Ноли, спасибо за ваш ответ. Но могу ли я знать, где я должен разместить этот код? находится внутри создаваемой части или другой части? потому что, когда я помещу это в мой код, код будет иметь бесконечный цикл. Любая идея была бы очень признательна. Спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню