Query noise level in Android

前端 未结 2 494
小鲜肉
小鲜肉 2021-02-03 12:36

I want to develop a small Android app to measure the current noise level (probablyin dB). But I have no idea what to look for in the libs. I don\'t want to record the noise. Can

相关标签:
2条回答
  • 2021-02-03 13:19

    I recommend looking in these classes:

    android.media.AudioFormat
    android.media.AudioManager
    android.media.AudioTrack
    

    We used them in the Blinkendroid audio package a short while ago.

    0 讨论(0)
  • 2021-02-03 13:39

    The following code snippet shows how we obtained the noise level in the past. Unfortunately the documentation does not tell what unit #getMaxAmplitude() returns.

    // Start recording but don't store data
    MediaRecorder mediaRecorder = new MediaRecorder();
    mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    mediaRecorder.setOutputFile("/dev/null");
    mediaRecorder.prepare();
    mediaRecorder.start();
    
    // Obtain maximum amplitude since last call of getMaxAmplitude()
    while(someCondition) {
        int amplitude = mediaRecorder.getMaxAmplitude();
    }
    
    // Don't forget to release
    mediaRecorder.reset();
    mediaRecorder.release();
    
    0 讨论(0)
提交回复
热议问题