Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida no Ex. 2 da Aula 2 - Câmera e arquivos

Minha rotina funciona perfeitamente, abre a camera, tira a foto, retorna para a aplicação em seguida trava.

Debugando percebi que o problema ocorre na linha:

Bitmap fotoReduzida = Bitmap.createScaledBitmap(foto, 100, 100, true);

O que estou fazendo de errado? Alguém pode me ajudar?

Seguem os métodos completos:

    public void setFoto(String caminhoArquivo) {
        //aluno.setCaminhoFoto(caminhoArquivo);

        Bitmap foto = BitmapFactory.decodeFile(caminhoArquivo);
        Bitmap fotoReduzida = Bitmap.createScaledBitmap(foto, 100, 100, true);

        campoFoto.setImageBitmap(fotoReduzida);
    }

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

        if (requestCode == 123){

            if (resultCode == Activity.RESULT_OK){
                helper.setFoto(this.caminhoArquivo);
            } else {
                this.caminhoArquivo = null;
            }

        }
    }
        foto.setOnClickListener(new View.OnClickListener() {
            @TargetApi(Build.VERSION_CODES.M)
            @Override
            public void onClick(View v) {


                if (ActivityCompat.checkSelfPermission(FormularioActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {

                    // aqui informo quais são as permissões que quero que o usuario valide.
                    String[] permissoes = {Manifest.permission.WRITE_EXTERNAL_STORAGE};

                    // nesse momento eu faço o request para obter as permissões
                    requestPermissions( permissoes,  123);

                } else {
                    tirarFoto();
                }

            }
        });
    private void tirarFoto() {
        Intent irParaCamera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        caminhoArquivo = getExternalFilesDirs(null) + "/" + System.currentTimeMillis() + ".png";
        File arquivo = new File(caminhoArquivo);
        Uri localDaFoto = Uri.fromFile(arquivo);
        irParaCamera.putExtra(MediaStore.EXTRA_OUTPUT, localDaFoto);
        startActivityForResult(irParaCamera, 123);
    }
1 resposta
solução!

Resolvido, o erro estava ao pegar o diretório para salvar a imagem, usei getExternalFilesDirs ao invés de getExternalFilesDir.