Android AudioRecord - не инициализируется второй раз

Хей, я сейчас пытаюсь заставить 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 (). Но это не сработало .. У кого-нибудь есть идеи?

13
задан slezadav 26 October 2012 в 15:50
поделиться