Для активности камеры код результата равен -1 в onActivityResult (). Как продолжить отладку? - PullRequest
0 голосов
/ 01 мая 2020

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

btnN.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                captureImage(v);
            }
        });

Определения функций приведены ниже.

public void captureImage(View view) {
        Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

        if (cameraIntent.resolveActivity(getPackageManager()) != null) {
            File imageFile = null;
            try {
                imageFile = getImageFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
            if (imageFile != null) {
                Uri imageUri = FileProvider.getUriForFile(this, "com.example.testingproject.fileprovider", imageFile);
                cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
                startActivityForResult(cameraIntent, 1);
            }
            System.out.println("imageFile length:" + imageFile.length());

        }

    }

В приведенной выше функции я даже попытался отправить код запроса как 2. Та же функциональность, я могу нажать на картинку, но та же проблема.

    public File getImageFile() throws IOException {
        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmsss").format(new Date());
        String imageName = "jpg_" + timeStamp + "_";
        File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);

        File imageFile = File.createTempFile(imageName, ".jpg", storageDir);
        currentImagePath = imageFile.getAbsolutePath();
        System.out.println("currImPath: " + currentImagePath);
        return imageFile;
    }

Очень необходимый onActivityResult() код ниже

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
        super.onActivityResult(requestCode, resultCode, intent);
        try {
            System.out.println("reqCode: "+requestCode+" resCode: "+resultCode);
            switch (requestCode) {
                case 0: {
                    if (resultCode == RESULT_OK) {
                        File file = new File(currentImagePath);
                        Bitmap bitmap = MediaStore.Images.Media.getBitmap(MainActivity.this.getContentResolver(), Uri.fromFile(file));
                        if (bitmap != null) {
                        //...Do your stuffs
                            Toast.makeText(MainActivity.this, "Bitmap NOT null", Toast.LENGTH_SHORT).show();
                            imgView.setImageBitmap(bitmap);
                        }
                        else
                        {
                            Toast.makeText(MainActivity.this,"BitmapNull",Toast.LENGTH_SHORT).show();
                        }
                    }




                    break;
                }
                default: Toast.makeText(MainActivity.this,"result code not okay",Toast.LENGTH_SHORT).show(); break;
            }

        } catch (Exception error) {
            error.printStackTrace();
        }
    }

Sysout в журнале ниже

2020-05-01 13:52:24.644 10014-10014/com.example.testingproject I/System.out: reqCode: 1 resCode: -1

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

Когда вы смотрите в код. -1 является актуальным кодом состояния для RESULT_OK

 public static final int RESULT_OK = -1;

Теперь вы установили requestCode как 1 в этой строке

startActivityForResult(cameraIntent, 1);

То есть в вашем OnActivityResult, который показывает

reqCode: 1 resCode: -1

Правильно.

0 голосов
/ 01 мая 2020

-1 равно RESULT_OK. Это означает, что задача выполнена успешно

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