В настоящее время мне нужно зафиксировать момент, когда начинается исходящий звонок. Согласно Abeer Ahmad в "Как определить состояние звонка исходящего вызова в android" , решение чтобы определить изменение частоты испускаемого звука (от 0 до значения, соответствующего кольцу), используя класс Visualizer. Однако во время совершения вызова не регистрируется значение частоты, отличное от 0 (тишина). Это не соответствует тому, что происходит, когда мобильный телефон излучает другой звук, такой как воспроизведение звуковой дорожки, где обнаружены значения частоты. Может ли кто-нибудь помочь мне или дать мне альтернативное решение?
Вот мой код:
mVisualizer = new Visualizer(0);
mVisualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1]);
Visualizer.OnDataCaptureListener listener = new Visualizer.OnDataCaptureListener(){
@Override
public void onWaveFormDataCapture(Visualizer visualizer, byte[] bytes, int samplingRate) { }
@Override
public void onFftDataCapture(Visualizer visualizer, byte[] bytes, int samplingRate) {
for (int i=0;i<bytes.length;i++) {
if (bytes[i] != 0) {
Log.i("INFO","FREQUENCY:"+bytes[i]);
break;
}
}
}
};
mVisualizer.setDataCaptureListener(listener, Visualizer.getMaxCaptureRate() / 2, true, true);
Я использую Android Jellybean (API 17).