КАМЕРА: Устройство ниже API 24 ничего не возвращает OnActivityResult - PullRequest
0 голосов
/ 06 марта 2019

Здесь я начинаю делать фотографии

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                        if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
                            File photoFile = null;
                            try {
                                photoFile = createImageFile();
                            } catch (IOException ex) {
                            }
                            if (photoFile != null) {
                                if (Build.VERSION_CODES.N <= android.os.Build.VERSION.SDK_INT) {

                                    photoURI = FileProvider.getUriForFile(getApplicationContext(),
                                            "za.co.keyfleet.driverapp.fileprovider",
                                            photoFile);

                                } else {

                                    photoURI = Uri.fromFile(photoFile);

                                }

                                takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
                                startActivityForResult(takePictureIntent, 1);
                            }
                        }

Это называется OnActivityResult

File file = new File(mCurrentPhotoPath);
                        String filePath= file.getAbsolutePath();
                        Bitmap bitmap = BitmapFactory.decodeFile(filePath);


                        if (bitmap != null) {
                            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

                            Matrix matrix = new Matrix();
                            matrix.postRotate(0);
                            bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(),
                                    matrix, true);
                            bitmap.compress(Bitmap.CompressFormat.JPEG, 50, byteArrayOutputStream);
                            byteArray = byteArrayOutputStream.toByteArray();
                            String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT);
                            if (byteArray != null) {
                                mCheck.setChecked(true);
                            }
                        }else
                        {
                            Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();
                        }

Проблема в том, что он отлично работает с API 24 и выше, но ниже он просто ничего не возвращаетЯ могу открыть камеру с обоими и вернуться без ошибок с обоими, но только «новые» телефоны возвращают растровое изображение, а старые просто пустые.Мне нужно иметь возможность сделать и вернуть фотографию со всех устройств Android.

...