Я хочу воспроизвести данные на любом мобильном динамике / наушниках, как только получу их с микрофона на Android. Я попробовал некоторые приложения из Playstore, и они показывали хороший результат, как я и ожидал.
Я начал писать свое собственное приложение, так как я должен использовать его для каких-то других целей и не могу использовать сторонние приложения. Я могу взять звук с mi c и воспроизвести на колонках, но при их воспроизведении слышен тикающий звук. Я не смог получить его в других приложениях, но в моем приложении это заметно.
Я использую AudioRecord
для записи звука и AudioTrack
для его воспроизведения. Как только чтение завершено, я передаю буфер для воспроизведения потока, и он воспроизводит аудио оттуда.
Ниже приведен псевдокод для того же
/**
* Audio recording & sending to thread.
*/
audioRecorder = new AudioRecord(
MediaRecorder.AudioSource.MIC,
8000,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT,
AudioRecord.getMinBufferSize(8000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT)
);
audioRecorder.startRecording();
while(audioStreaming)
{
int streamLength = audioRecorder.read(audioStreamBuffer, 0, audioStreamBuffer.length);
pass audioStreamBuffer and streamLength to thread
}
/**
* Fetching from thread and playback.
*/
audioTrack = AudioTrack(AudioManager.STREAM_MUSIC, Playback.DEFAULT_RECORDER_SAMPLERATE,
AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_16BIT,
AudioRecord.getMinBufferSize(8000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT),
AudioTrack.MODE_STREAM);
audioTrack.play();
if(! audioPaused){
audioTrack.write(data, 0, data.length);
}
Я не уверен, почему тиканье в моем коде и как мне его решить. Я читал об этом здесь , но это относится к AudioTrack.MODE_STATIC
, и у меня есть MODE_STREAM
.
Я предполагаю, что у меня может быть та же проблема, что и в приведенной выше ссылке, но я не уверен, как ее решить или в чем еще может быть проблема? Можете ли вы дать несколько возможных советов, чтобы я мог go через них?