我的应用程序中有一个简单的逻辑,用于查找特定音调。
问题是逻辑在应用程序的 OnCreate 方法中(它必须在应用程序运行时检测音调)。
它有点难看,因为我打算在应用程序启动时添加更多逻辑。
有没有人对如何将该代码移动到不同的类以便可以从那里调用它有任何建议?
该类仍然必须访问主 Activity 中的 View 。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AudioDispatcher dispatcher = AudioDispatcherFactory.fromDefaultMicrophone(22050,1024,0);
dispatcher.addAudioProcessor(new PitchProcessor(PitchEstimationAlgorithm.FFT_YIN, 22050, 1024, new PitchDetectionHandler() {
@Override
public void handlePitch(PitchDetectionResult pitchDetectionResult,
AudioEvent audioEvent) {
final float pitchInHz = pitchDetectionResult.getPitch();
runOnUiThread(new Runnable() {
@Override
public void run() {
Float value = pitchInHz;
Toast.makeText(getApplicationContext(),value.tostring(), Toast.LENGTH_SHORT).show();
}
});
}
}));
foo = new Thread(dispatcher,"Audio Dispatcher");
foo.start();
}
最佳答案
基本上,您有两种选择可以让您的代码更简洁。
- 将
onCreate()
中的所有代码(除了前两行)移到另一个方法中,比方说lookForPitch()
。然后你就可以在onCreate()
中调用它了。 如果您打算创建更多专注于音频处理的方法,您可以创建单独的类,例如
AudioUtils.java
。此实用程序类应包含公共(public)静态方法,您可以从代码中的任何位置调用这些方法。如果是onCreate()
,您可以这样调用它:AudioUtils.lookForPitch()
。此外,如果你想处理只能在你的 Activity 中访问的 View ,你可以将它们作为参数传递。所以您在AudioUtils
中的方法可以如下所示:public static void lookForPitch(TextView myTextView) { // your code goes here }
关于java - 将逻辑从 MainActivity 移动到 Android 中的另一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31359102/