AudioManager.setMicrophoneMute() и TarsosDSP AudioDispatcher

Я все еще вижу некоторые проблемы с функцией AudioManager.setMicrophoneMute(). Я контролирую аудио вход в микрофон через библиотеку TarsosDSP в моем приложении. Я отключил микрофон с помощью функции setMicrophoneMute (), но API TarsosDSP по-прежнему показывает входящий звук в микрофон. Есть ли у вас какие-либо идеи, как отключить звук микрофона таким образом, чтобы получение высоты тона результата из AudioDispatcherFactory.fromDefaultMicrophone указывало на то, что микрофон отключен? Вот мой код:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    audioManager = (AudioManager)
            getSystemService(Context.AUDIO_SERVICE);

    checkBox = (CheckBox) findViewById(R.id.checkBox);

    checkBox.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (checkBox.isChecked()) {
                audioManager.setMicrophoneMute(true);
                isMicMuted = true;
            }
            else {
                audioManager.setMicrophoneMute(false);
                isMicMuted = false;
            }
        }
    });

    dispatcher = AudioDispatcherFactory.fromDefaultMicrophone(22050, 1024, 0);

    PitchDetectionHandler pdh = new PitchDetectionHandler() {
        @Override
        public void handlePitch(PitchDetectionResult result, AudioEvent e) {
            final float pitchInHz = result.getPitch();
            runOnUiThread(new Runnable() {
                              @Override
                              public void run() {
                                  // TODO Somehow make this an arbitrary frequency check
                                  compareFreqs = abs(pitchInHz - freq) < 5.0;
                                  TextView text = (TextView) findViewById(R.id.textView);

                                  TextView text2 = (TextView) findViewById(R.id.textView2);
                                  text2.setText("frequency:  " + pitchInHz);
                                  if (pitchInHz == 466) {

                                      text.setText("Mic Muted");
                                      maxfreq = pitchInHz;
                                      isMicMuted = true;
                                      Log.i("maxfrequency", String.valueOf(maxfreq));
                                  }

                              }
                          }
            );
        }
    };
    AudioProcessor p = new PitchProcessor(PitchProcessor.PitchEstimationAlgorithm.FFT_YIN, 22050, 1024, pdh);
    dispatcher.addAudioProcessor(p);

    new Thread(dispatcher, "Audio Dispatcher").start();

}

0 ответов

Другие вопросы по тегам