android AudioRecorder簡單心得分享
更新時間:2013年10月04日 16:24:50 作者:
這篇文章介紹了android AudioRecorder簡單心得,有需要的朋友可以參考一下
1.如何創(chuàng)建一個有效的AudioRecorder實例
Android各種設(shè)備的采樣頻率不同,輸入的聲道數(shù)也不同,如果采用固定的采樣頻率和聲道數(shù),那么得到的AudioRecorder不一定能夠正常初始化。
為了正常使用,需要嘗試各種不同的參數(shù),得到在此設(shè)備上可以用的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.有些設(shè)備上面,即使你得到了有效的AudioRecorder實例,在audioRecord.startRecording()的時候還會報ERROR_BAD_VALUE錯誤。
這有可能是你使用了AudioManager而沒有釋放導(dǎo)致的。
其他錯誤都可以在網(wǎng)絡(luò)上找到答案。
Android各種設(shè)備的采樣頻率不同,輸入的聲道數(shù)也不同,如果采用固定的采樣頻率和聲道數(shù),那么得到的AudioRecorder不一定能夠正常初始化。
為了正常使用,需要嘗試各種不同的參數(shù),得到在此設(shè)備上可以用的AudioRecorder實例。代碼如下:
復(fù)制代碼 代碼如下:
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.有些設(shè)備上面,即使你得到了有效的AudioRecorder實例,在audioRecord.startRecording()的時候還會報ERROR_BAD_VALUE錯誤。
這有可能是你使用了AudioManager而沒有釋放導(dǎo)致的。
其他錯誤都可以在網(wǎng)絡(luò)上找到答案。
您可能感興趣的文章:
相關(guān)文章
Android 用adb pull或push 拷貝手機(jī)文件到到電腦上,拷貝手機(jī)數(shù)據(jù)庫到電腦上,拷貝電腦數(shù)據(jù)庫到手機(jī)上
這篇文章主要介紹了Android 用adb pull或push 拷貝手機(jī)文件到到電腦上,拷貝手機(jī)數(shù)據(jù)庫到電腦上,拷貝電腦數(shù)據(jù)庫到手機(jī)上 的相關(guān)資料,需要的朋友可以參考下2016-01-01
Kotlin1.6.20新功能Context?Receivers使用技巧揭秘
這篇文章主要為大家介紹了Kotlin1.6.20功能Context?Receivers使用揭秘,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
Android 系統(tǒng)net和wap接入點(diǎn)的區(qū)別
這篇文章主要介紹了Android 系統(tǒng)net和wap接入點(diǎn)的區(qū)別的相關(guān)資料,需要的朋友可以參考下2016-09-09
kotlin anko頁面跳轉(zhuǎn)實現(xiàn)方式,攜帶參數(shù)或flag
這篇文章主要介紹了kotlin anko頁面跳轉(zhuǎn)實現(xiàn)方式,攜帶參數(shù)或flag,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
android Socket實現(xiàn)簡單聊天功能以及文件傳輸
這篇文章主要介紹了android Socket實現(xiàn)簡單聊天功能以及文件傳輸,非常具有實用價值,有需要的朋友可以參考下。2017-02-02
Android RecyclerView實現(xiàn)下拉刷新和上拉加載更多
這篇文章主要為大家詳細(xì)介紹了Android RecyclerView實現(xiàn)下拉刷新和上拉加載更多,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02
Android數(shù)據(jù)持久化之ContentProvider機(jī)制詳解
這篇文章主要介紹了Android數(shù)據(jù)持久化之ContentProvider機(jī)制,結(jié)合實例形式分析了ContentProvider機(jī)制的原理與相關(guān)使用技巧,需要的朋友可以參考下2017-05-05

