Повторное использование объекта записи в Android после вызова stop()

Я делаю приложение, в котором я делаю звук и записываю этот звук, оцениваю эту запись и делаю это снова, пока звук не станет хорошим.

Проблема, которую я имею, состоит в том, что кажется невозможным повторно использовать объект AudioRecord. Эта запись работает в потоке. Когда вызывается событие onMarkerReached, я вызываю myAudioRecord.stop();и после оценки я начинаю это снова так:

    if(recorderThread == null) {
      recorderThread = new Thread(recorder.runRecorderThread);
    }
    recorderThread.start();

Но рекордер вызывается только в первый раз, когда это происходит.

2 ответа

Решение

Причина, по которой я не смог перезапустить запись, была вызвана NotificationProperty. У меня был логический "isReading", и когда это было сделано, я позвонил:

public void setIsReading(boolean isReading) {
  pcs.firePropertyChange("isReading", this.isReading, isReading);
  this.isReading = isReading;
}

так:

while(isReading) {
   AudioRecord.read(..);
}

Потому что я сначала запустил firePropertyChange остановил его, прежде чем он остановил чтение.

Возможно, вы никогда не устанавливаете recorderThread в null?

Другие вопросы по тегам