Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
15
respostas

Problemas ao salvar tentar guardar imagem.

Olá, gente!

Estou tento dificuldades para guardar a imagem tirada pela câmera do dispositivo android. Ao clicar no botão de "ok" para que a imagem seja salva, nada acontece.

Já fiz de tudo.. vi e revi o meu código, porém não achei nada de errado. :(

Alguém já teve algo parecido ou sabe do que se trata?

15 respostas

O emulador da erro ou VC clica no botão OK e não ocorre nada.

Eu clico no botão 'OK', para salvar a foto, e absolutamente nada ocorre.

verifica se vc fez essa alteração.

no capitulo câmera e arquivos no minuto 9:47 tem que fazer uma alteração na variável aluno e colocar ela em outros pontos.

Sim. Está tudo feito como no vídeo.. O estranho é que não aparece nada nem no Log. Imagino que possa ser algum problema do AVD.

não pois isso acontece comigo ontem a noite, coloquei o aluno em dois eventos que estavam faltando e funcionou

a minha está assim

package br.com.caelum.cadastro;

import br.com.caelum.cadastro.modelo.Aluno;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RatingBar;

public class FormularioHelper {

    private EditText editNome;
    private EditText editSite;
    private EditText editEndereco;
    private EditText editTelefone;
    private RatingBar ratingNota;
    private ImageView foto;
    private Aluno aluno;

    public FormularioHelper(Formulario formulario) {
        editNome = (EditText) formulario.findViewById(R.id.nome);
        editSite = (EditText) formulario.findViewById(R.id.site);
        editEndereco = (EditText) formulario.findViewById(R.id.endereco);
        editTelefone = (EditText) formulario.findViewById(R.id.telefone);
        ratingNota = (RatingBar) formulario.findViewById(R.id.nota);
        foto = (ImageView) formulario.findViewById(R.id.foto);
        aluno = new Aluno();
    }

    public Aluno pegaAlunoDoFormulario() {
        aluno.setNome(editNome.getText().toString());
        aluno.setSite(editSite.getText().toString());
        aluno.setEndereco(editEndereco.getText().toString());
        aluno.setTelefone(editTelefone.getText().toString());
        aluno.setNota(Double.valueOf(ratingNota.getRating()));
        return aluno;
    }

    public void colocaAlunoNoFormulario(Aluno alunoParaSerAlterado) {
        aluno = alunoParaSerAlterado;
        editNome.setText(alunoParaSerAlterado.getNome());
        editSite.setText(alunoParaSerAlterado.getSite());
        editTelefone.setText(alunoParaSerAlterado.getTelefone());
        editEndereco.setText(alunoParaSerAlterado.getEndereco());
        editNome.setText(alunoParaSerAlterado.getNome());
        ratingNota.setRating(alunoParaSerAlterado.getNota().floatValue());

        if (aluno.getFoto() != null) {
            carregaImagem(alunoParaSerAlterado.getFoto());
        }
    }

    public ImageView getFoto() {
        return foto;
    }

    public void carregaImagem(String caminhoArquivo) {
        aluno.setFoto(caminhoArquivo);
        Bitmap imagem = BitmapFactory.decodeFile(caminhoArquivo);
        Bitmap imagemReduzida = Bitmap.createScaledBitmap(imagem, 100, 100,true);
        foto.setImageBitmap(imagemReduzida);
    }

}

Irei colocar o meu código aqui. Não vejo nada de diferente, mas sabe como é.. as vezes precisamos de uma outra pessoa para enxergar.

package br.com.caelum.cadastro.helper;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RatingBar;
import br.com.caelum.cadastro.Formulario;
import br.com.caelum.cadastro.R;
import br.com.caelum.cadastro.modelo.Aluno;

public class FormularioHelper {

    private Aluno aluno;
    private EditText nome;
    private EditText site;
    private EditText telefone;
    private EditText endereco;
    private RatingBar nota;
    private ImageView foto;
    private Button botao;

    public FormularioHelper(Formulario formulario) {
        nome = (EditText) formulario.findViewById(R.id.formulario_nome);
        site = (EditText) formulario.findViewById(R.id.formulario_site);
        telefone = (EditText) formulario.findViewById(R.id.formulario_telefone);
        endereco = (EditText) formulario.findViewById(R.id.formulario_endereco);
        nota = (RatingBar) formulario.findViewById(R.id.formulario_nota);
        foto = (ImageView) formulario.findViewById(R.id.formulario_foto);
        botao = (Button) formulario.findViewById(R.id.formulario_botao);
        aluno = new Aluno();
    }

    public Aluno pegaAlunoFormulario() {
        aluno.setNome(nome.getText().toString());
        aluno.setSite(site.getText().toString());
        aluno.setTelefone(telefone.getText().toString());
        aluno.setEndereco(endereco.getText().toString());
        aluno.setNota(nota.getNumStars());

        return aluno;
    }

    public void preencheAlunoFormulario(Aluno alunoParaSerAlterado) {
        aluno = alunoParaSerAlterado;

        nome.setText(alunoParaSerAlterado.getNome());
        site.setText(alunoParaSerAlterado.getSite());
        telefone.setText(alunoParaSerAlterado.getTelefone());
        endereco.setText(alunoParaSerAlterado.getEndereco());
        nota.setRating(alunoParaSerAlterado.getNota().floatValue());

        if(aluno.getFoto() != null) {
            carregaImagem(alunoParaSerAlterado.getFoto());
        }
    }

    public ImageView getFoto() {
        return foto;
    }

    public Button getBotao() {
        return botao;
    }

    public void carregaImagem(String fotoDir) {
        aluno.setFoto(fotoDir);

        Bitmap bm = BitmapFactory.decodeFile(fotoDir);
        bm = Bitmap.createScaledBitmap(bm, 100, 100, true);

        foto.setImageBitmap(bm);
    }
}
solução!

Consegui solucionar o erro! Eu estava montando o diretório para guardar a imagem de forma errada!

Estava usando: Environment.getExternalStorageState();

Invés de: Environment.getExternalStorageDirectory().toString();

Obrigado pela ajuda!

VC já vez o novo layout ?

Novo layout de tela? Ainda não.. Parei nesse vídeo de câmeras e arquivos. Hoje a noite irei continuar.

estou com erro e não consigo solucionar, o aplicativo ao abrir da erro.

Oi Pedro!

Acontece alguma exception ou simplesmente não acontece nada?

Você pode mandar o código da sua activity também?

abraço

Juliano,

você poderia abrir uma nova dúvida contendo o código da sua ListaAlunosActivity e a stacktrace do erro? Lembre-se que para ver a stacktrace você precisa acessar o Logcat (no eclipse: Ctrl 3 + Logcat).

Abraço.

o meu esta conforme o codigo e não ta dando certo, não salva a foto, não deveria ser no pegaAlunoFormulario() ?

onde ele esta setando a foto para ir para o banco de dados?

Carlos,

você poderia abrir uma nova dúvida?

Abraço.