[RESOLVIDO][DÚVIDA] MediaRecorder

Oi pesssoal, =)

Alguém pode me tirar uma dúvida? Quero salvar uma gravação de audio em meu sd card do android.
Até ai tudo bem, consigo fazer. Mas percebi que ele não salva corretamente o que eu falo, tem um corte, como se fosse um DELAY para iniciar a gravação.

Eu devo inicializar a gravação em uma Thread() na classe que importa meu AudioRecorder?
Existe algum método que diminua este DELAY?

AudioRecorder.class

import java.io.File;
import java.io.IOException;
import android.media.MediaRecorder;
import android.os.Environment;
import android.os.Handler;

public class AudioRecorder implements Runnable {
	
	private final MediaRecorder mr = new MediaRecorder();
	private final int DELAY = 5500;
	private final String path;
	private boolean gravando = false;
	
	public AudioRecorder(String titulo) {
		this.path = checkPath(titulo);
	}
	
	private String checkPath(String titulo) {
		if(!titulo.startsWith("/")) {
			titulo = "/" + titulo;
		}
		if(!titulo.contains(".3gp")) {
			titulo += ".3gp";
		}
		return Environment.getExternalStorageDirectory().getAbsolutePath() + titulo;
	}
	
	public void start() throws IOException {
		String state = android.os.Environment.getExternalStorageState();
		if(!state.equals(android.os.Environment.MEDIA_MOUNTED)) {
			throw new IOException("SD Card ainda não foi carregado... Ele está "+ state + ".");
		}
		
		File dir = new File(path).getParentFile();
		if(!dir.exists() && !dir.mkdirs()) {
			throw new IOException("Diretorio para o arquivo não pode ser criado...");
		}
		
		//Tipo de gravação = Microfone.
		mr.setAudioSource(MediaRecorder.AudioSource.MIC);
		//Formato da nossa gravação = .3gp [Padrão Android].
		mr.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
		//Encoder.
		mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
		//Informando local aonde salvaremos o arquivo.
		//  path = "/mnt/sdcard/NOME_DO_ARQUIVO.3gp
		mr.setOutputFile(path);
		//Preparando o MediaRecorder.
		mr.prepare();
		//Gravando...
		mr.start();
		new Handler().postDelayed(this, DELAY);
	}
	
	public void stop() throws IOException {
		mr.stop();
		mr.release();
	}
        
    //Método Runnable que dará um stop() na gravação depois de 5 seg de gravação.
	@Override
	public void run() {
		try {
			stop();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

Utilizar Thread() e Handler() ajuda e MUITO! :slight_smile:

RESOLVIDO…

[quote=felipebonezi]Utilizar Thread() e Handler() ajuda e MUITO! :slight_smile:

RESOLVIDO…[/quote]

Coloca aê como vc fez para contribuir com comunidade!
Grato!