3
respostas

Meu código não apresenta nenhum erro aparente e a foto não aparece no ImageView

public class Formulario extends AppCompatActivity {

    public static final int CAMERA_CODE = 123;
    Button salvar;
    FormularioHelper helper;
    private String caminhofoto;
    ImageView campofoto;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_formuluario);
        helper = new FormularioHelper(this);
        salvar = findViewById(R.id.salvar);
        campofoto = findViewById(R.id.formulario_foto);

        final Intent intent = getIntent();
        Aluno aluno = (Aluno) intent.getSerializableExtra("aluno");
        if(aluno!= null){
             helper.preencherFormulario(aluno);

        }
        Button botaocamera = findViewById(R.id.formulario_botao_foto);
        botaocamera.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intentCamera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                caminhofoto = getExternalFilesDir(null)+"/"+System.currentTimeMillis()+".jpg";
                File arquivofoto = new File(caminhofoto);
                intentCamera.putExtra(MediaStore.EXTRA_OUTPUT,FileProvider.getUriForFile(getApplicationContext(),BuildConfig.APPLICATION_ID +".provider",arquivofoto));
                    startActivityForResult(intentCamera, CAMERA_CODE);


            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode == CAMERA_CODE && resultCode == Activity.RESULT_OK){
            Bitmap bitmap = BitmapFactory.decodeFile(caminhofoto);
            Bitmap reduzido = Bitmap.createScaledBitmap(bitmap,300,300,true);
            campofoto.setImageBitmap(reduzido);
            campofoto.setScaleType(ImageView.ScaleType.FIT_XY);
        }
    }

Consigo acessar a câmera, tiro a foto normal, mas depois que volto para a Activity do formulário ela n aparece no meu ImageView, detalhe ela fica salva normalmente na minha galeria. Estou usando o android 7.

3 respostas

Jefferson, tudo bem ?

Cara na solução da atividade, o instrutor mostra o código para Android 7 e versões posteriores, troca e fala pra gente se deu tudo certo :D

Jefferson boa noite tudo bem? Verifiquei uma parte do seu código e está diferente da que o instrutor apresentou no vídeo.

Seu método botaocamera.setOnClickListenerabaixo intentCamera.putExtra(MediaStore.EXTRA_OUTPUT,FileProvider.getUriForFile(getApplicationContext(),BuildConfig.APPLICATION_ID +".provider",arquivofoto)); está diferente do que ele apresentou, que é o seguinte: intentCamera.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(arquivoFoto));

Faça as alterações e nos responda se deu tudo certo =)

if(resultCode == CAMERA_CODE && resultCode == Activity.RESULT_OK)

Você utilizou resultCode nas duas verificações, resultCode é para validar o resultado da Activity da camera e "requestCode" para o tipo de Activity que esta retornando o resultado. No seu caso então deveria ser:

if(requestCode == CAMERA_CODE && resultCode == Activity.RESULT_OK)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software