Câmera

Utilizando o Intent para Captura de Vídeo

Para capturar vídeos utilizando a Activity padrão do Android não é muito diferente de capturar fotos. A Listagem 5 nos mostrará o código necessário para atingir o mesmo resultado e depois analisaremos as diferenças entre os dois métodos de captura.

x
1
private static final int CAPTURAR_VIDEO = 200; 
2
private Uri fileUri;
3
@Override 
4
public void onCreate(Bundle savedInstanceState) { 
5
      super.onCreate(savedInstanceState); 
6
      setContentView(R.layout.main);
7
      Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); 
8
9
      File mediaStorageDir = new File( 
10
            Environment.getExternalStoragePublicDirectory( 
11
                  Environment.DIRECTORY_PICTURES), "NomeDaPasta"); 
12
13
      if (!mediaStorageDir.exists()){ 
14
            mediaStorageDir.mkdirs(); 
15
      } 
16
17
      String timeStamp = 
18
      new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
19
      File file = new File(mediaStorageDir.getPath() + File.separator + 
20
            "VID_"+ timeStamp + ".mp4"); 
21
22
      fileUri = Uri.fromFile(file);
23
      intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
24
      intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0);
25
      intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 30);
26
      intent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, (1024 * 1024));
27
      startActivityForResult(intent, CAPTURAR_VIDEO);
28
}
Listagem 5 - Capturando um vídeo e salvando em local conhecido

Podemos perceber no código que poucas mudanças são necessárias para capturar vídeo, no lugar de fotos. A primeira mudança notável é a mudança na action do Intent. Agora passamos a ACTION_VIDEO_CAPTURE. Além disso, mudamos o formato e o prefixo do arquivo a ser salvo, indicando agora que o mesmo é um vídeo e mantendo o timeStamp como nome. As últimas linhas que mostram uma diferença importante e dizem respeito aos extras que são colocados no Intent.

O primeiro extra novo que vemos no Intent é o EXTRA_VIDEO_QUALITY. Esse atributo pode receber o valor 0, indicando que o vídeo deve ser gravado na menor qualidade possível, que também é a que ocupa menos espaço. Já o segundo extra, o EXTRA_DURATION_LIMIT, indica, em segundos, o tempo máximo que o vídeo poderá ter antes de ser finalizado. Por fim, o EXTRA_SIZE_LIMIT indica, em bytes, o tamanho máximo que o vídeo poderá atingir antes de ser parado. Com todos esses extras configurados, podemos iniciar a Activity da câmera normalmente, através do Intent criado.

Versão 5.3 - Todos os Direitos reservados