大佬教程收集整理的这篇文章主要介绍了如何在Android中使用音频api录制音频?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
public class AudioCapturer implements Runnable { private AudioRecord audioRecorder = null; privatE int bufferSize; privatE int samplePerSec = 16000; private String LOG_TAG = "AudioCapturer"; private Thread thread = null; private Boolean isRecording; private static AudioCapturer audioCapturer; private IAudioReceiver iAudioReceiver; private AudioCapturer(IAudioReceiver audioReceiver) { this.iAudioReceiver = audioReceiver; } public static AudioCapturer geTinstance(IAudioReceiver audioReceiver) { if (audioCapturer == null) { audioCapturer = new AudioCapturer(audioReceiver); } return audioCapturer; } public void start() { bufferSize = AudioRecord.getMinBufferSize(samplePerSec,AudioFormat.CHAnnEL_IN_MONO,AudioFormat.ENCODING_PCM_16BIT); if (bufferSize != AudioRecord.ERROR_BAD_VALUE && bufferSize != AudioRecord.ERROR) { audioRecorder = new AudioRecord(MediaRecorder.Audiosource.DEFAULT,this.samplePerSec,AudioFormat.ENCODING_PCM_16BIT,this.bufferSize * 10); // bufferSize // 10x if (audioRecorder != null && audioRecorder.getState() == AudioRecord.STATE_INITIALIZED) { Log.i(LOG_TAG,"Audio Recorder created"); audioRecorder.startRecording(); isRecording = true; thread = new Thread(this); thread.start(); } else { Log.e(LOG_TAG,"Unable to create AudioRecord instance"); } } else { Log.e(LOG_TAG,"Unable to get minimum buffer size"); } } public void stop() { isRecording = false; if (audioRecorder != null) { if (audioRecorder.getRecordingState() == AudioRecord.RECORDSTATE_RECORDING) { // System.out // .println("Stopping the recorder inside AudioRecorder"); audioRecorder.stop(); } if (audioRecorder.getState() == AudioRecord.STATE_INITIALIZED) { audioRecorder.release(); } } } public Boolean isRecording() { return (audioRecorder != null) ? (audioRecorder.getRecordingState() == AudioRecord.RECORDSTATE_RECORDING) : false; } @Override public void run() { android.os.process.setThreadPriority(android.os.process.THREAD_PRIORITY_URGENT_AUdio); while (isRecording && audioRecorder.getRecordingState() == AudioRecord.RECORDSTATE_RECORDING) { short[] tempBuf = new short[Constants.FRAME_SIZE / 2]; audioRecorder.read(tempBuf,tempBuf.length); iAudioReceiver.capturedAudioReceived(tempBuf,falsE); } } /* * (non-JavadoC) * * @see java.lang.object#finalize() */ @Override protected void finalize() throws Throwable { super.finalize(); System.out.println("AudioCapturer finalizer"); if (audioRecorder != null && audioRecorder.getState() == AudioRecord.STATE_INITIALIZED) { audioRecorder.stop(); audioRecorder.release(); } audioRecorder = null; iAudioReceiver = null; thread = null; } }
现在你可以在你的程序的Main类中使用这个类的对象,它将开始为你提供音频样本,你可以在你的IAudioReceiver(使用这些样本的类)中处理它们.
如果您仍想使用MediaRecorder,this link对您有用,
以上是大佬教程为你收集整理的如何在Android中使用音频api录制音频?全部内容,希望文章能够帮你解决如何在Android中使用音频api录制音频?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。