我一直在使用AudioRecord for Android時遇到問題。我已經閱讀了儘可能多的網上有關它,但我似乎無法得到一個良好的初始化。我嘗試了Android 2.2模擬器,1.5模擬器和我的手機,HTC Incredible運行Froyo。仿真器和手機無法初始化。我嘗試過採樣率爲8000,11025和44100,CHANNEL_IN_MONO/STEREO和CHANNEL_CONFIGURATION_MONO/STEREO,8位和16位編碼(8位使getMinBufferSize失敗)以及MIC和DEFAULT的AudioSource格式。運行get狀態(初始化失敗)後,變量測試中的所有結果都變爲0。Android AudioRecord無法初始化
從我讀過的一切看來,這應該正確地初始化對象。我玩過buflen的乘法器,它的範圍從512(函數的結果)到102400,因爲我聽說HTC設備需要8192以上的東西。
爲了測試我的問題,我做了一個新的,儘可能簡單地重現我的問題的小型項目。我將所需的常量抽出到本地整數中,然後運行構造函數並訪問getState方法來檢查它是否工作。
package com.example.audiorecordtest;
import android.app.Activity;
import android.os.Bundle;
import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;
public class audioRecordTest extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
int freq =8000;
int chan = AudioFormat.CHANNEL_IN_MONO;
int enc = AudioFormat.ENCODING_PCM_16BIT;
int src = MediaRecorder.AudioSource.MIC;
int buflen = AudioRecord.getMinBufferSize(freq, chan, enc);
AudioRecord ar = new AudioRecord(src,freq,chan,enc,20*buflen);
int test = ar.getState();
}
}
謝謝,我猜想我跳得有點太快,試圖讓音頻工作,卻沒有意識到我必須這樣做。謝謝一堆。 – 2010-11-12 13:27:07
他爲什麼需要使用振動器? – Tom 2011-01-24 11:57:35