android AudioRecorder简单心得分享
程序员文章站
2023-11-21 23:34:10
1.如何创建一个有效的audiorecorder实例 android各种设备的采样频率不同,输入的声道数也不同,如果采用固定的采样频率和声道数,那么得到的audioreco...
1.如何创建一个有效的audiorecorder实例
android各种设备的采样频率不同,输入的声道数也不同,如果采用固定的采样频率和声道数,那么得到的audiorecorder不一定能够正常初始化。
为了正常使用,需要尝试各种不同的参数,得到在此设备上可以用的audiorecorder实例。代码如下:
private void createaudiorecord() {
for (int samplerate : new int[]{44100, 8000, 11025, 16000, 22050, 32000,
47250, 48000}) {
for (short audioformat : new short[]{
audioformat.encoding_pcm_16bit,
audioformat.encoding_pcm_8bit}) {
for (short channelconfig : new short[]{
audioformat.channel_in_mono,
audioformat.channel_in_stereo}) {
// try to initialize
try {
recbufsize = audiorecord.getminbuffersize(samplerate,
channelconfig, audioformat);
if (recbufsize < 0) {
continue;
}
audiorecord = new audiorecord(mediarecorder.audiosource.mic,
samplerate, channelconfig, audioformat,
recbufsize * 2);
if (audiorecord.getstate() == audiorecord.state_initialized) {
return;
}
audiorecord.release();
audiorecord = null;
} catch (exception e) {
// do nothing
}
}
}
}
throw new illegalstateexception(
"getinstance() failed : no suitable audio configurations on this device.");
}
2.常见错误
1.有些设备上面,即使你得到了有效的audiorecorder实例,在audiorecord.startrecording()的时候还会报error_bad_value错误。
这有可能是你使用了audiomanager而没有释放导致的。
其他错误都可以在网络上找到答案。
android各种设备的采样频率不同,输入的声道数也不同,如果采用固定的采样频率和声道数,那么得到的audiorecorder不一定能够正常初始化。
为了正常使用,需要尝试各种不同的参数,得到在此设备上可以用的audiorecorder实例。代码如下:
复制代码 代码如下:
private void createaudiorecord() {
for (int samplerate : new int[]{44100, 8000, 11025, 16000, 22050, 32000,
47250, 48000}) {
for (short audioformat : new short[]{
audioformat.encoding_pcm_16bit,
audioformat.encoding_pcm_8bit}) {
for (short channelconfig : new short[]{
audioformat.channel_in_mono,
audioformat.channel_in_stereo}) {
// try to initialize
try {
recbufsize = audiorecord.getminbuffersize(samplerate,
channelconfig, audioformat);
if (recbufsize < 0) {
continue;
}
audiorecord = new audiorecord(mediarecorder.audiosource.mic,
samplerate, channelconfig, audioformat,
recbufsize * 2);
if (audiorecord.getstate() == audiorecord.state_initialized) {
return;
}
audiorecord.release();
audiorecord = null;
} catch (exception e) {
// do nothing
}
}
}
}
throw new illegalstateexception(
"getinstance() failed : no suitable audio configurations on this device.");
}
2.常见错误
1.有些设备上面,即使你得到了有效的audiorecorder实例,在audiorecord.startrecording()的时候还会报error_bad_value错误。
这有可能是你使用了audiomanager而没有释放导致的。
其他错误都可以在网络上找到答案。