Использовать потоковую аудиозапись в аудиоменеджере

Я пытаюсь определить уровень громкости того, что в данный момент передается через микрофон, с помощью «getStreamVolume» в «audiomanager».

Единственные доступные исходные потоки, перечисленные в документации для audiomanager, предназначены для сигналов тревоги, DTMF, музыки, уведомлений, телефонных звонков, системных звуков и телефонных звонков. Я не знаю, как проложить микрофон через audiomanager, чтобы получить текущую громкость канала.

Любое руководство будет высоко оценено

Спасибо


person jblz    schedule 23.05.2011    source источник


Ответы (1)


getStreamVolume() из AudioManager возвращает настройку громкости, а не фактическую громкость.

Вместо этого вам нужно прочитать значения из потока, получить среднее значение за относительно короткий промежуток времени и использовать это значение.

Согласно документации для AudioRecord, здесь, используйте read(byte[], int, int), read(short[], int, int) или read(ByteBuffer, int). .

person CL22    schedule 23.05.2011
comment
Спасибо за ответ, хотя я мало что знаю об использовании звука в Java. Как я могу получить текущий объем из чтения байтов? - person jblz; 24.05.2011