1

我在音乐应用程序中写了一个吉他调音器。单击按钮时,主要活动启动调谐器。调谐器工作正常。但是,如果我回到主要活动。Tuner 活动开始,但音高检测没有。线程不会因为录音机而停止。

我从主要活动启动了一个活动 Act_Accordage

public void clicAccordage(View v){
        Intent intentAct_Accordage = new Intent(this, Act_Accordeur .class);
    startActivity(intentAct_Accordage);
}

这是我的 Act_Accordage 活动

public final AudioDispatcher dispatcher = AudioDispatcherFactory.fromDefaultMicrophone(22050, 2048, 0);
    ....
          dispatcher.addAudioProcessor(new PitchProcessor(PitchEstimationAlgorithm.YIN, 22050, 2048, new PitchDetectionHandler() {

                @Override
                public void handlePitch(PitchDetectionResult pitchDetectionResult,
                                        AudioEvent audioEvent) {
                    final float pitchInHz = pitchDetectionResult.getPitch();
                    if (Logo.interrupted()) {
                        return;
                    }
                    if (pitchInHz > -1) {
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                // display name note and cursor ou UI thread
                               textFreqNote.setText(String.valueOf(pitchInHz) + " CREATE "); 
                               Affcurseur(pitchInHz);
                             });
                    }

                }
            }));
             new Thread(dispatcher, "Audio Dispatcher");

    2***/I come back main with  button or backbutton
    public void onclicSetBackMain(View v) {
            Act_Accordeur.this.finish();
            Toast.makeText(Act_Accordeur.this, "Guitare accordée", Toast.LENGTH_LONG).show();}
4

1 回答 1

0

使用 dispatcher.stop(); 停止音频调度线程。我在官方文档中花了很长时间,但这是值得的。

于 2019-01-03T09:26:43.577 回答