How to adjust microphone sensitivity while recording audio in android

后端 未结 4 1578
清歌不尽
清歌不尽 2020-12-03 04:11

I\'m working on a voice recording app. In it, I have a Seekbar to change the input voice gain. I couldn\'t find any way to adjust the input voice gain.

I am using th

4条回答
  •  时光取名叫无心
    2020-12-03 04:50

    As I understand you don't want any automatic adjustments, only manual from the UI. There is no built-in functionality for this in Android, instead you have to modify your data manually.

    Suppose you use read (short[] audioData, int offsetInShorts, int sizeInShorts) for reading the stream. So you should just do something like this:

    float gain = getGain(); // taken from the UI control, perhaps in range from 0.0 to 2.0
    int numRead = read(audioData, 0, SIZE);
    if (numRead > 0) {
        for (int i = 0; i < numRead; ++i) {
            audioData[i] = (short)Math.min((int)(audioData[i] * gain), (int)Short.MAX_VALUE);
        }
    }
    

    Math.min is used to prevent overflow if gain is greater than 1.

提交回复
热议问题