Androidでマイク入力のボリュームを制御する方法

AudioRecordの場合は自力で計算する必要がある。

audioRec.startRecording();
bIsRecording = true;
new Thread(new Runnable() {
    @Override
    public void run() {
        short buf[] = new short[bufSize];
        while (bIsRecording) {
            int numRead = audioRec.read(buf, 0, buf.length);

            float gain = 0.3f;
            if (numRead > 0) {
                for (int i = 0; i < numRead; ++i) {
                    buf[i] = (short)Math.min((int)(buf[i] * gain), (int)Short.MAX_VALUE);
                }
            }

            // Log.d("audiorecord", String.valueOf(buf.length));
            // Log.i("audiorecord", String.valueOf(buf[0]));
        }
        // 録音停止
        audioRec.stop();
        audioRec.release();
    }
}).start();

こんな感じにすれば良いらしい。

特集記事

Posted by @erestage