Изображение камеры Android не отображается в ImageView - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь сделать снимок с помощью камеры "Nexus 5X API 26" и показать его в поле ImageView перед загрузкой в ​​Firebase.

Первая проблема заключается в том, что после съемки она не отображается в imageView. Я делаю следующее:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(intent, CAMERA_REQUEST_CODE);}

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

filePath = data.getData();
   try {
      Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath);
      imageView.setImageBitmap(bitmap);
   } catch (IOException e) {
       e.printStackTrace();
   }

Часть, которую я не понимаю, как data.getData() работает в обоих случаях (для галереи и для камеры)?

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

То, что я сейчас упускаю, так это то, что я не получаю filePath, наверное? Нужно ли "временно сохранять" изображение с камеры, чтобы .getData()? Или это может работать без какого-либо "спасения"?

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

просмотр при открытии камеры вид после съемки

1 Ответ

0 голосов
/ 09 ноября 2018

Это поможет вам.

Intent intent= new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
       startActivityForResult(intent,7);


     @Override
        protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {

            super.onActivityResult(requestCode, resultCode, data);


                    bitmap= (Bitmap) data.getExtras().get("data");
            ByteArrayOutputStream baos=new ByteArrayOutputStream();

            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
            byte[] b = baos.toByteArray();
            imageEncoded = Base64.encodeToString(b,Base64.DEFAULT);

            byte[] imageAsBytes = Base64.decode(imageEncoded.getBytes(), Base64.DEFAULT);
            InputStream is=new ByteArrayInputStream(imageAsBytes);
            bitmap1=BitmapFactory.decodeStream(is);
            img.setImageBitmap(bitmap1);


        }
...