Android爆击检测

时间:2015-08-03 07:13:37

标签: android

我想让应用程序像appy生日,我可以在用户吹麦克风时检测到打击,目前我使用的代码效率不高,因为它还检测噪音和正常声音,我正在使用Media Record类。 我试过这种方法来检测打击

public boolean isBlowing()
    {
        boolean recorder=true;

        int minSize = AudioRecord.getMinBufferSize(8000,AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT);
        AudioRecord ar = new AudioRecord(MediaRecorder.AudioSource.MIC, 8000,AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT,minSize);


        short[] buffer = new short[minSize];

        ar.startRecording();
        while(recorder)
        {

            ar.read(buffer, 0, minSize);
            for (short s : buffer) 
            {
                if (Math.abs(s) > 27000)   //DETECT VOLUME (IF I BLOW IN THE MIC)
                {
                    blow_value=Math.abs(s);
                    System.out.println("Blow Value="+blow_value);
                    ar.stop();
                    recorder=false;

                    return true;

                }

            }
        }
        return false;

    }

伙计们,如果您的代码只能检测到不正常的声音,请提供, 提前谢谢。

0 个答案:

没有答案
相关问题