Странное поведение Android AudioTrack и AudioRecord

Я создал объект Audio Track и Audio Recorder и попытался вернуть звук микрофона в динамик.

Для этого я создал задачу, которая «считывает» аудиоданные из задачи «Аудиозапись» и «записывает обратно» на аудиодорожку. Кажется, он работает нормально. Однако, играя с этим приложением, пытаясь манипулировать данными, я узнал, что эта задача, которая копирует данные аудиодорожки и записывает их обратно, практически ничего не делает - я удалил ее и остался только с двумя строками:

    audioRecord.startRecording();
    audioTrack.play();

Нет ни чтения, ни записи — приложение продолжает работать — т. е. данные с микрофона передаются эхом в динамик! На практике все операции чтения и записи, которые я пытался выполнить, игнорируются!

Некоторое другое неожиданное поведение:

Я попытался остановить этот процесс, позвонив AudioTrack.stop() или AudioTrack.pause() - ничего не происходит, единственный способ остановить звук был вызовом AudioRecord.stop(), однако после наклона AudioRecord я не смог найти способ перезапустить его.

Кто-нибудь еще испытал это? у кого-нибудь есть решение? Кто-нибудь может объяснить такое странное поведение Android AudioTrack и AudioRecord?


person Eitan M.    schedule 19.09.2012    source источник


Ответы (1)


Эти 3 строки должны работать для вас, когда вы хотите остановить audioTrack

audioTrack.flush();
audioTrack.stop();
audioTrack.release();
person Irfan Ul Haq    schedule 26.10.2012
comment
Моя главная проблема заключается в том, почему это странное недокументированное поведение, когда прямое соединение создается внутри между микрофоном и динамиком без какого-либо способа его контролировать. - person Eitan M.; 26.11.2012