Реализовать getMaxAmplitude для аудиозаписи

Я использую audioRecord вместо mediarecorder в своем приложении, оно работает нормально, но у меня есть логика, которая сильно зависит от максимальной амплитуды, которую очень сложно получить с помощью audiorecord, вот что я использую при чтении буфера

 private void writeAudioDataToFile(){
        byte data[] = new byte[bufferSize];

        String filename = getTempFilename();
        FileOutputStream os = null;

        try {
            os = new FileOutputStream(filename);
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        int read = 0;
        max=0;
        if(null != os){
            while(isRecording){
                read = recorder.read(buffer, 0, bufferSize);
                int ab = (buffer[0] & 0xff) << 8 | buffer[1];
                amplitude = Math.abs(ab);

            if(amplitude>0&&amplitude<25000)
                isSilence=true;         
            else
                isSilence=false;

                //System.out.println(">>>>>>>>>>>"+amplitude);
                if(AudioRecord.ERROR_INVALID_OPERATION != read){
                    try {
                        os.write(buffer);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }

            try {
                os.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

но это не работает для меня, так как значение меняется очень быстро, мне нужно реализовать что-то вроде getMaxAmplitude ()для audioRecord.

9
задан Jamshid 14 April 2015 в 10:17
поделиться