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);
}