DESENVOLVER PARA ANDROID: UTILIZANDO RECURSOS DA CÂMERA.

A utilização da câmera pode ser feita “pedindo” a ela para tirar uma foto para você. É um método bastante simples, pois você não precisa saber exatamente como uma câmera funciona e também porque poderá usar todos os controles já existentes na câmera, como efeitos de luminosidade, contraste, flash,  etc.

Basta chamar a Intent da câmera:


Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

startActivityForResult(intent);

Com esse trecho de código já será possível exibir a câmera do emulador ou no seu próprio dispositivo android.

Agora vamos tratar do local onde sua app irá armazenar as fotos.


String arquivo = Environment.getExternalStorageDirectory() + "/" + System.currentTimeMillis() + ".jpg";

File file = new File(arquivo);

Uri outputFileUri = Uri.fromFile(file);

intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);

A manipulação do arquivo é feita pela classe File(padrão do java) e a localização do seu SDCard é encontrada pelo método Environment.getExternalStorageDirectory() . E as operações adicionais que fizemos foi dar nome à imagem e iniciar a atividade.

E dando continuidade no nosso formulário, iremos listar algo a mais para incrementá-la. Na classe Formulario.java que será chamada pela sua Activity principal ao clicar em um registro da sua ListView, adicione esse código.


private ImageButton ib;

ib = (ImageButton) findViewById(R.id.foto);

ib.setImageResource(R.drawable.noimage);

ib.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

     Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

     arquivo = Environment.getExternalStorageDirectory() + "/" + System.currentTimeMillis() + ".jpg";

     File file = new File(arquivo);

     Uri outputFileUri = Uri.fromFile(file);

     intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);

     startActivityForResult(intent, TIRA_FOTO);

}

@Override

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

     super.onActivityResult(requestCode, resultCode, data);

     if(requestCode == TIRA_FOTO){

         if(resultCode != RESULT_CANCELED){

         aluno.setFoto(arquivo);

         carregaImagem();

         }

     }

}

private void carregaImagem() {

     FileInputStream fis;

     Bitmap bmp = null;

     try {

         fis = new FileInputStream(aluno.getFoto());

         bmp = BitmapFactory.decodeStream(fis);

         fis.close();

     } catch (Exception e) {

         e.printStackTrace();

    }

    if(bmp != null){

        bmp = Bitmap.createScaledBitmap(bmp, 50, 50, true);

     }

  }

});

      if(aluno.getFoto() != null){

          carregaImagem();

      }

}

Aqui tratamos do resultado da operação com o método onActivityResult() e a exibição da foto através da classe Bitmap e FileInputStrem

Agora o resultado como ficou no seu emulador.

Clicando no botão:

É isso..


8 Responses to DESENVOLVER PARA ANDROID: UTILIZANDO RECURSOS DA CÂMERA.

  1. Fernando disse:

    Yuri,
    Parabéns pelo post, ficou muito bom! Estou com um pequeno problema: Quando clico no botão para tirar a foto ou apenas deixo a tela da câmera aberta, ele saí por erro. Você sabe porque? Poderia me ajudar?

    Obrigado,
    Abraços

    • Yuri Adams disse:

      Valeu pelo elogio meu chapa..
      Cara que erro ta aparecendo? apenas a janela da câmera fecha e volta pra sua aplicação? a aplicação trava? aparece alguma erro no log? já debugou?
      enfim.. agora no momento não posso ti ajudar muito mas vai me falando a respeito do erro que agente desenrola… Vlwww

  2. Lucas Marques disse:

    Muito bom!

    Cara, como eu faria se quisesse criar minha propria camera ao inves de usar o intent para chamar a camera do Android?

    Abraco!

    • Yuri Adams disse:

      Cara, o android já disponibiliza tudo pronto pra tu mexer com a api da câmera, pq vc quer implementar a sua propria?

  3. Yuri, pode postar o projeto todo?

  4. Yuri, nesta aplicação você está utilizando apis do maps, por isso ele importa o projeto mas da missing dependencies. Você utilizou quais libs?

    • Yuri Adams disse:

      Cara, eu criei um projeto com a Target: “Google APIs (Google Inc.)”, ele já vem com vem com as dependecias pra mexer com Google Maps🙂

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: