Проблемы с получением изображения с камеры для просмотра в качестве объекта ImageView. - Android - PullRequest
0 голосов
/ 21 апреля 2020

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

ПРОБЛЕМА. Проблема в том, что изображение не отображается в режиме просмотра изображений. Он возвращается к активности после съемки, но не отображает его.

AndroidManifest. xml имеет следующее добавленное:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-feature android:name="android.hardware.camera" android:required="true" />
...

   <provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="com.application.hidden.provider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths" />
        </provider>

file_paths. xml:

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
        <external-files-path name="my_images" path="/" />
</paths>

MainActivity. java

private File createImageFile() throws IOException {
        String timeStamp =
                new SimpleDateFormat("yyyyMMdd_HHmmss",
                        Locale.getDefault()).format(new Date());
        String imageFileName = "IMG_" + timeStamp + "_";
        File storageDir = this.getContext().getExternalFilesDir(Environment.DIRECTORY_PICTURES);
        File image = File.createTempFile(
                imageFileName,
                ".jpg",
                storageDir
        );

        imagePath = image.getAbsolutePath();
        return image;
    }

@OnClick({R.id.takePicture, R.id.pic})
    void onTakePic() {
        changeImageLayout.setVisibility(GONE);
        System.out.println("Setting up for capture, clicked on camera");
        Intent pictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        if(pictureIntent.resolveActivity(getActivity().getPackageManager()) != null) {
            //Create a file to store the image
            File photoFile = null;
            try {
                photoFile = createImageFile();
            } catch (IOException ex) {
            }
            if(photoFile != null) {
                Uri photoURI = FileProvider.getUriForFile(this.getContext(),"com.application.hidden.provider", photoFile);
                pictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
                startActivityForResult(pictureIntent, RESULT_LOAD_CAMERA_IMG);
            }
        }
    }

 @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
            case RESULT_LOAD_CAMERA_IMG:
                switch (resultCode) {
                    case Activity.RESULT_OK:
                        Glide.with(this).load(imagePath).into(listingImage);
                        break;
                    case Activity.RESULT_CANCELED:
                        isNewImageAdded = false;
                        break;
                    default:
                        break;
                }
                break;
            default:
                break;
        }
    }

Буду признателен за любые предложения или помощь!

Спасибо.

Ответы [ 2 ]

0 голосов
/ 21 апреля 2020

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

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

Для открытой камеры:

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

startActivityForResult(intent, 7);

Затем в onActivityResult результат:

if (requestCode == 7 && resultCode == RESULT_OK) {
  Bitmap bitmap = (Bitmap) data.getExtras().get("data");
  imageView.setImageBitmap(bitmap);
}
0 голосов
/ 21 апреля 2020

Вам необходимо преобразовать путь к файлу в объект файла, использовать новый файл (imagepath), а не просто путь к изображению внутри глиссады.

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