// 在Manifest.xml中添加录音权限
// 在Activity中请求麦克风权限 private static final int PERMISSION_REQUEST_CODE = 200; private String[] PERMISSIONS = { Manifest.permission.RECORD_AUDIO }; if (!hasPermissions(this, PERMISSIONS)) { ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_REQUEST_CODE); }
// 可以添加以下辅助函数 private boolean hasPermissions(Context context, String... permissions) { if (context != null && permissions != null) { for (String permission : permissions) { if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) { return false; } } } return true; }
private AudioManager audioManager; private static final int RECORDER_SAMPLERATE = 44100;
// 切换录音源 audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); audioManager.setSpeakerphoneOn(false); audioManager.setMicrophoneMute(false); audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL, audioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL), 0);
// 开启录音 private void startRecording() { ... AudioRecord recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, RECORDER_SAMPLERATE, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize); ... } 注意:Android Emulator 有一些已知的音频问题,如噪声、失真等问题,这可能是由于 Android Emulator 的限制造成的。如果上述方法无法解决问题,可以尝试使用物理设备进行测试。