不一定。虽然AudioTrack和AudioRecord的getMinBufferSize方法在某些情况下可能返回相同的值,但它们的实现略有不同,这可能导致它们返回不同的值。
以下代码演示如何调用getMinBufferSize方法,并创建相应的AudioTrack和AudioRecord实例:
int sampleRateInHz = 44100;
int channelConfig = AudioFormat.CHANNEL_OUT_MONO;
int audioFormat = AudioFormat.ENCODING_PCM_16BIT;
int bufferSizeInBytes = AudioTrack.getMinBufferSize(sampleRateInHz, channelConfig, audioFormat);
AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, sampleRateInHz, channelConfig, audioFormat, bufferSizeInBytes, AudioTrack.MODE_STREAM);
bufferSizeInBytes = AudioRecord.getMinBufferSize(sampleRateInHz, channelConfig, audioFormat);
AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleRateInHz, channelConfig, audioFormat, bufferSizeInBytes);
在这种情况下,AudioTrack和AudioRecord实例将创建具有相同的sampleRateInHz、channelConfig和audioFormat参数。但它们的getMinBufferSize方法调用将返回不同的bufferSizeInBytes值,因为它们的实现略有不同。因此,您应该始终为每个实例调用相应的getMinBufferSize方法,并使用正确的bufferSizeInBytes值来创建它们。