Чтение официальной документации аудиодорожки, я заметил, что я могу записать массив поплавка затем прочитать его в потоковом или буферном режиме:не может найти AudioTrack.write (поплавок [], Int, Int, Int) в Android
общественного ИНТ записи (поплавок [] аудиоданный, внутр offsetInFloats, внутр sizeInFloats, внутр WriteMode) Добавлены в уровне API 21
Записывает аудио данных в аудио раковины для воспроизведения (потоковый режим), или копии аудио данные для последующего воспроизведения (режим статического буфера). В режиме статический буфер копирует данные в буфер, начиная со смещения 0, и режим записи игнорируется. В потоковом режиме поведение блокировки будет зависеть от режима записи.
Я попытался использовать его в своем коде, как это:
....
float[]raw2=bytesToFloats(read(f2));
int convhandle= FFTProcessor.createFastConvolutionContext(raw1.length, raw1, im1);
long t1=System.currentTimeMillis();
FFTProcessor.performFastConvolution(convhandle, raw2, im2);
long t2=System.currentTimeMillis()-t1;
int minSize=audio.getMinBufferSize(22050, AudioFormat.CHANNEL_CONFIGURATION_STEREO, AudioFormat.ENCODING_PCM_8BIT);
audio = new AudioTrack(AudioManager.STREAM_MUSIC,22050, AudioFormat.CHANNEL_CONFIGURATION_STEREO, AudioFormat.ENCODING_PCM_8BIT, minSize ,AudioTrack.MODE_STREAM);
audio.write(raw2, 0, raw2.length, WRITE_NON_BLOCKING);
audio.play();
......
Но я получаю эту ошибку в методе записи():
The method write(byte[], int, int) in the type AudioTrack is not applicable for the arguments (float[], int, int, int)
Я обновил свой SDK, и проверил файл манифеста, android:targetSdkVersion="21" />
, но все еще не знаете, что случилось.
В чем Ваш 'minSdkVersion'? – StenSoft
@StenSoft –
hanaa
Вы не можете использовать функции, недоступные в вашем 'minSdkVersion', если вы не украсите класс/метод' @TargetApi '. Обратите внимание, что использование этого вызова в более низком API приведет к краху вашего приложения. – StenSoft