我正在使用下面的代碼來獲取該設備的有效採樣率,但對於我的Samsung Galaxy Tab 1 OS版本2.3.6,它始終發送0爲audioRecorder.getState()
,但它適用於三星Galaxy S2。Android:audioRecorder.getState()在Samsung Galaxy Tab中發送0
手段Galaxy Tab的我總是desiredRate = -1;
public static void getValidSampleRates() {
int desiredRate = 0;
for (int rate : new int[] {44100, 8000, 11025, 16000, 22050}) { // add the rates you wish to check against
int bufferSize = AudioRecord.getMinBufferSize(rate, AudioFormat.CHANNEL_CONFIGURATION_DEFAULT, AudioFormat.ENCODING_PCM_16BIT);
if (bufferSize > 0) {
// buffer size is valid, Sample rate supported
AudioRecord audioRecorder = new AudioRecord(AudioSource.MIC, rate, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, 21168);
if (audioRecorder.getState() != AudioRecord.STATE_INITIALIZED)
desiredRate = -1;
else
desiredRate = rate;
}
}
}
我在的Android添加下面的權限艙單文件
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="14" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<application
請幫助
你在logcat中得到任何錯誤打印?我會期望從'AudioRecord'構造函數發出錯誤信息。如果將'bufferSize'傳遞給'AudioRecord'構造函數而不是使用'21168'的硬編碼值? – Michael
嘗試更改您的代碼到'int bufferSize = AudioRecord.getMinBufferSize(rate,AudioFormat.CHANNEL_IN_DEFAULT,AudioFormat.ENCODING_PCM_16BIT);'和instatiaton行到'AudioRecord audioRecorder = new AudioRecord(AudioSource.MIC,rate,AudioFormat.CHANNEL_IN_MONO,AudioFormat。 ENCODING_PCM_16BIT,bufferSize + 2000);' –