Обновление галереи после съемки фотографий Галерея не показывает все изображения Android Camera - PullRequest
2 голосов
/ 29 декабря 2011

Я использую onClick над кнопкой, чтобы сделать снимок.

PictureCallback myPictureCallback_JPG = new PictureCallback() {

    @Override
    public void onPictureTaken(byte[] arg0, Camera arg1) {

        FileOutputStream outStream = null;
        try {
            // Write to SD Card
            outStream = new FileOutputStream(String.format("/sdcard/%d.jpg", System.currentTimeMillis())); 
            outStream.write(arg0);
            outStream.close();
            Toast.makeText(Photo.this, "Image Saved to SD Card", Toast.LENGTH_SHORT).show();
            System.out.println();
        } catch (FileNotFoundException e) { 
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        camera.startPreview();
    }};

Изображение сохраняется на SD-карте. Затем пользователь нажимает кнопку «Отправить», и открывается макет, при щелчке по ImageView открывается Галерея изображений и при щелчке на определенном изображении выбирается URI.

    imageAttachPhoto = (ImageView)findViewById(R.id.imageViewPhotoOne);
    imageAttachPhoto.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            Intent intent = new Intent();
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE);
        }
    });
}

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        if (requestCode == SELECT_PICTURE) {
            Uri selectedImageUri = data.getData();
            selectedImagePath = getPath(selectedImageUri);
            System.out.println("Image Path : " + selectedImagePath);
            imageAttachPhoto.setImageURI(selectedImageUri);
        }
    }
}

public String getPath(Uri uri) {
    String[] projection = { MediaStore.Images.Media.DATA };
    Cursor cursor = managedQuery(uri, projection, null, null, null);
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
}

Но я не могу просматривать изображения, привязанные в коде Галереи, но могу видеть изображения через FileBrowser, и когда я открываю SD-карту в ПК, я вижу изображение, а затем Android показывает изображение в Галерее также с помощью код. Дайте мне знать, что это за проблема и как ее решить, с нетерпением ждем вашего ответа. Спасибо.

Ответы [ 3 ]

7 голосов
/ 17 марта 2012

Даже если это немного старше!Но у меня просто была такая же проблема.Ответ Soni работает, но требует, чтобы Media Scanner каждый раз искал новые файлы во всем каталоге.Вы также можете просто зарегистрировать свой новый файл, который кажется немного более производительным

sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://"+f.getAbsolutePath())));

f - это файл, который вы хотите зарегистрировать.

7 голосов
/ 29 декабря 2011

Мультимедийный файл сканирования Android и те, которые отображаются при использовании content provider ... когда вы запускаете свое приложение и берете новую камеру в то время, когда вы только что взяли новые фотографии, но галерея по умолчанию не знает об этих новых фотографиях, потому что они отсутствует в списке медиа-провайдера.

Я думаю, добавление этой строки после фотосъемки и перед вызовом галереи покажет все последние фотографии, снятые с камеры.

    sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, 
                 Uri.parse("file://"+ Environment.getExternalStorageDirectory())));

Это вызовет исключение SecurityException в KitKat +. Попробуйте метод Vossi или используйте MediaScannerConnection, как здесь: stackoverflow - @ absk

0 голосов
/ 25 августа 2015
  1. простой ответ заключается в том, что сначала запустите приложение, захватите изображение с камеры вашего приложения, а затем просто просмотрите в галерее вашего устройства.

  2. вы можете 't увидеть последнее захваченное изображение вашим приложением в то время, как только вы перезагрузите ваше устройство и увидите, что ваше последнее захваченное изображение находится в галерее вашего устройства.

  3. еще одна вещь, после вашегоперезагрузите устройство, затем снова откройте свое собственное приложение и снова запишите одно изображение из вашего приложения и увидите, что ваше второе захваченное изображение можно увидеть в галерее без каких-либо действий на вашем устройстве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...