Я использую приведенный ниже код, чтобы получить действительную частоту дискретизации для устройства, но он всегда отправляет 0 для audioRecorder.getState()
для My Samsung Galaxy Tab 1 OS версии 2.3.6, но это отлично подходит для Samsung Galaxy S2.Android: audioRecorder.getState() отправляет 0 в Samsung Galaxy Tab
Средства для 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 = новый AudioRecord (AudioSource.MIC, rate, AudioFormat.CHANNEL_IN_MONO, AudioFormat. ENCODING_PCM_16BIT, bufferSize + 2000); ' –