Привет, я сейчас пытаюсь заставить AudioRecord работать. Потому что мне это нужно в большем проекте. Но, похоже, это сильно испортило.
Я много чего пробовал, поэтому вернулся к основам, когда отследил эту ошибку.
Я использую свой Samsung Galaxy S в качестве устройства отладки.
Моя проблема в том, что в первый раз после перезагрузки устройства я могу без проблем инициализировать созданный мной объект AudioRecord.
Но при втором запуске он не инициализирует объект AudioRecord.
Я пробовал несколько частот, к вашему сведению.
Вот мой код:
package android.audiorecordtest;
import android.app.Activity;
import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class AudioRecordTest extends Activity {
int frequency;
AudioRecord audRec;
TextView txtVw;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
txtVw = (TextView) findViewById(R.id.txtVw);
frequency=8000;
int bufferSize=(AudioRecord.getMinBufferSize(frequency, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT))*2;
if (bufferSize>0) {
audRec = new AudioRecord(MediaRecorder.AudioSource.MIC, frequency, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize);
int status = audRec.getState();
if (status == AudioRecord.STATE_INITIALIZED) {
txtVw.setText("Initialized" + frequency);
} else {
txtVw.setText("Not Initialized i=" + frequency);
}
}
После нескольких часов просмотра информации logcat я нашел это событие
02-28 10:46:37.048: DEBUG/dalvikvm(4477): GC_EXPLICIT freed 1801 objects / 98944 bytes in 97ms
02-28 10:46:37.048: VERBOSE/AudioRecord(4477): stop
Что, похоже, "освобождает родную блокировку AudioRecord.
Поэтому я попытался сделать переопределение finalize с моим объектом Audiorecord object.release (). Это не сработало, хотя .. Кто-нибудь есть идеи?