Solucionado (ver solução)
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.

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