Android Visualizer FFT / форма волны зависит от громкости устройства? - PullRequest
8 голосов
/ 08 ноября 2011

Я работаю над анализом музыки с помощью класса Visualizer на Android 2.3.1. Я обнаружил, что объем БПФ и формы сигнала зависит от объема устройства. Это означает, что если у пользователя отключена громкость, я получаю мало или нет данных FFT.

Я проверял это на Motorola Xoom, Samsung Galaxy Tab и эмуляторе, и он ведет себя так.

Я использую код ниже:

mp = new MediaPlayer();
mp.setDataSource("/sdcard/sine1.wav");
mp.prepare();
mp.setLooping(true);
mp.start();
int audioSessionID = mp.getAudioSessionId();
v = new Visualizer(audioSessionID);
v.setEnabled(true);

Глядя на документы для класса визуализатора , кажется, что если мы передаем действительный идентификатор аудио-сеанса, то визуализатор должен работать с этим аудио-сеансом. Похоже, что визуализатор работает с выходным микшированием.

Кто-нибудь еще сталкивался с этим или нашел способ обойти это?

Спасибо

1 Ответ

11 голосов
/ 26 ноября 2011

Я также столкнулся с той же проблемой, но она работает, когда я включил Eqaulizer и Visualizer для одного и того же идентификатора сеанса. Я не знаю причину этого, я проверил его, удалите эквалайзер из класса визуализатора в демо-версиях API это работает как ты сказал.

 Equalizer mEqualizer = new Equalizer(0, SessionId);
 mEqualizer.setEnabled(true); // need to enable equalizer
 Visualizer mVisualizer = new Visualizer(SessionId);
...