我目前正在为Android开发录音机应用。我试图通过“设置”活动访问MainActivity
中的一些方法,以便更改MediaRecorder
的某些设置。
我有以下方法,该方法在我的MainActivity
中设置录音的音频设置。
// set up all audio settings
private void setAudioSettings() {
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
mediaRecorder.setAudioSamplingRate(44100);
mediaRecorder.setAudioEncodingBitRate(96000);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.HE_AAC);
}
在我的“设置”活动中,我想显示I have a standard preferences screen来更改MainActivity
中媒体记录器的音频编解码器,采样率等的选项。
如何在这里从setAudioSettings
访问MainActivity
方法?
如果需要查看更多代码或屏幕截图,请告诉我。
将该方法设为静态,因此您可以在不创建类对象的情况下进行调用
public static void yourMethod(){
//Write your code here
}
并以这种方式调用您的方法:
MainActivity.yourMethod();
简短的答案是,您不应将一个活动的功能用于另一个活动。
对于您的情况,建议您使用一个单例对象或共享首选项来存储设置屏幕的数据。然后在MainActivity的onStart中,读取单例对象或共享首选项,并相应地调用#setAudioSettings
方法。
保存设置,即共享首选项中的值,然后从“主要活动”中的首选项中获取。
您可以通过以下方式设置方法static
:
public static void setAudioSettings() {
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
mediaRecorder.setAudioSamplingRate(44100);
mediaRecorder.setAudioEncodingBitRate(96000);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.HE_AAC);
}
但是要做到这一点,mediaRecorder
也必须是静态的。
以后您可以通过以下任何方式在任何活动中调用此方法:
MainActivity.setAudioSettings();
例如,您可以了解有关static
关键字的更多信息。
但是,我不确定使用静态方法是确切解决您的问题的最佳解决方案,也许最好在here调用SharedPreferences
的SettingActivity
中设置onResume()
,然后再设置MainActivity
]方法并从setAudioSettings()
那里获得值?