直接上代码吧
1:权限:清单文件加入
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
2:申请权限:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1000);
}
if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.RECORD_AUDIO}, 2000);
}
3:初始化AudioRecord
int bufferSizeInBytes = AudioRecord.getMinBufferSize(16000,
AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);
if (audioRecord == null) {
audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, 16000,
AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSizeInBytes);
}
if (audioRecord.getState() == AudioRecord.STATE_UNINITIALIZED) {
LogUtil.e(" audioRecord init fail , Try another possibility ");
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, 16000,
AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSizeInBytes);
if (audioRecord.getState() == AudioRecord.STATE_UNINITIALIZED) {
LogUtil.e(" audioRecord init fail twice, Try another possibility ");
audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, 16000 / 2,
AudioFormat.CHANNEL_CONFIGURATION_DEFAULT, AudioFormat.ENCODING_PCM_16BIT, bufferSizeInBytes);
}
}
4:开启/关闭麦克风:
//开启麦克风
audioRecord.startRecording();
//关闭麦克风
if (audioRecord.getState() == AudioRecord.STATE_INITIALIZED) {
audioRecord.stop();
}
if (audioRecord != null) {
udioRecord.release();
}