我知道这个问题以前被问过很多次了。
我不想在 Run()
方法中添加标志。因为该方法仍在运行并耗尽电池电量。
我怎样才能完全停止线程?!
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_layout);
AudioDispatcher dispatcher = AudioDispatcherFactory.fromDefaultMicrophone(22050,1024,0);
dispatcher.addAudioProcessor(new PitchProcessor(PitchEstimationAlgorithm.AMDF, 22050, 1024, new PitchDetectionHandler() {
@Override
public void handlePitch(PitchDetectionResult pitchDetectionResult,
AudioEvent audioEvent) {
final float pitchInHz = pitchDetectionResult.getPitch();
runOnUiThread(new Runnable() {
@Override
public void run() {
Log.i("" + pitchInHz);
}
});
}
}));
Thread thread = new Thread(dispatcher,"Audio Dispatcher");
thread.start();
}
最佳答案
很确定这对你来说不再重要了,但对于任何将来可能使用 TarsosDSP
并面临同样问题的人来说,最简单的方法是制作一个全局 dispatcher
dispatcher = AudioDispatcherFactory.fromDefaultMicrophone(22050,1024,0);
然后简单地停止
线程
:
dispatcher.stop();
关于java - 如何在 Java 中完全停止线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31347502/