Android AudioRecord фильтр диапазона частот

Я использую платформу Android, из следующего справочного вопроса я узнаю, что с помощью класса AudioRecord, который возвращает необработанные данные, я могу фильтровать диапазон звуковой частоты, зависит от моих потребностей, но для этого мне понадобится алгоритм, может кто-нибудь помочь мне найти алгоритм фильтрации диапазона ч / б 14 400 б / ч и 16 200 б / ч.

Я пробовал "JTransform", но я не знаю, могу ли я достичь этого с помощью JTransform или нет? В настоящее время я использую «jfftpack» для отображения визуальных эффектов, который работает очень хорошо, но я не могу добиться аудио-фильтра, используя это.

Ссылка здесь

пасибо @help Спасибо заранее. Ниже приведен мой код, как я упоминал выше, я использую библиотеку "jfftpack", чтобы вы могли найти эту ссылку на библиотеку в коде, пожалуйста, не путайте с этим

private class RecordAudio extends AsyncTask<Void, double[], Void> {
        @Override
        protected Void doInBackground(Void... params) {
try {
    final AudioRecord audioRecord = findAudioRecord();
                    if(audioRecord == null){
                        return null;
                    }

                    final short[] buffer = new short[blockSize];
                    final double[] toTransform = new double[blockSize];

                    audioRecord.startRecording();


    while (started) {
                        final int bufferReadResult = audioRecord.read(buffer, 0, blockSize);

                        for (int i = 0; i < blockSize && i < bufferReadResult; i++) {
                            toTransform[i] = (double) buffer[i] / 32768.0; // signed 16 bit
                        }

                        transformer.ft(toTransform);
                        publishProgress(toTransform);

                    }
audioRecord.stop();
                audioRecord.release();
} catch (Throwable t) {
                Log.e("AudioRecord", "Recording Failed");
            }
            return null;

/**
         * @param toTransform
         */
        protected void onProgressUpdate(double[]... toTransform) {
            canvas.drawColor(Color.BLACK);
            for (int i = 0; i < toTransform[0].length; i++) {
                int x = i;
                int downy = (int) (100 - (toTransform[0][i] * 10));
                int upy = 100;
                canvas.drawLine(x, downy, x, upy, paint);
            }
            imageView.invalidate();
        }

Ответы на вопрос(1)

Ваш ответ на вопрос