Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Janailson Silva

Câmera

Recommended Posts

Olá,

 

Estou desenvolvendo um aplicativo, no qual o usuário fará um vídeo de no máximo 15 segundos e depois tem a possibilidade de enviar a um servidor onde outras pessoas que também use o aplicativo possa visualizar.

 

Abaixo está meu código.

 

private OnClickListener botao_Click = new OnClickListener() {
	
	@Override
	public void onClick(DialogInterface dialog, int which) {
		
		String arquivo = Environment.getExternalStorageDirectory() + "/" + System.currentTimeMillis() + ".3gp";
		File file = new File(arquivo);
		Uri outputFileUri = Uri.fromFile(file);
		
		Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
		intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
		intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0);
		intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 15);
		startActivityForResult(intent, Constante.CODE_VIDEO);
		
	}
};

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
	if (requestCode == Constante.CODE_VIDEO) {
		if (resultCode != RESULT_OK)
			return;
		
		Toast.makeText(Videos.this, "Vídeo inserido com sucesso.", Toast.LENGTH_SHORT).show();
		mostrarVideos();
	}
}

 

Problema 1: Nos aparelhos LG, o limitador de tempo não funciona. Existe alguma forma de fazer funcionar?

 

Problema 2: Em alguns modelos, ao direcionar o vídeo a ser salvo no SD, a câmera para de responder. Percebi que nos aparelhos que tem a versão do Android em 4.0.4, funciona corretamente. Abaixo disso, a câmera sempre trava. E seu eu direciono o vídeo para a memória interna do aparelho, funciona normalmente. Alguém já teve esse problema e conseguiu resolver?

 

Meu aplicativo está configurado em.

MinSDK: API 7

TargetSDK: API 17

BuildSDK: API 17

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido.

 

Pesquisando em alguns sites americanos, descobri que há problemas realmente em alguns modelos de celulares e que para resolver, basta alterar o "onActivityResult" para o que está abaixo.

 

try {
	AssetFileDescriptor videoAsset = getContentResolver().openAssetFileDescriptor(data.getData(), "r");
	FileInputStream fis = videoAsset.createInputStream();
	File videoFile = new File(Environment.getExternalStorageDirectory(), "arquivo.mp4");
	FileOutputStream fos = new FileOutputStream(videoFile);
	
	byte[] buffer = new byte[1024];
	int length;
	while ((length = fis.read(buffer)) > 0) {
		fos.write(buffer, 0, length);
	}
	
	fos.close();
	fis.close();
}
catch (IOException e) {
	Log.e("IOException", e.toString());
}
catch (Exception e) {
	Log.e("Exception", e.toString());
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.