Как я могу получить доступ к методам из моей основной деятельности в моей активности настроек? - PullRequest
0 голосов
/ 16 марта 2020

В настоящее время я разрабатываю приложение для записи голоса для 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);
}

В моем действии Настройки У меня есть стандартный экран настроек , на котором я хотел бы показать параметры для изменения аудиокода c, частота дискретизации, et c. медиа-рекордера в MainActivity.

Как я могу получить доступ к методу setAudioSettings из MainActivity здесь, чтобы сделать это?

Если вам нужно увидеть больше кода или скриншотов , пожалуйста, дайте мне знать.

Ответы [ 4 ]

1 голос
/ 16 марта 2020

Краткий ответ: вы не должны использовать функции одного и того же действия в другом.

В вашем случае я бы предложил вам использовать одноэлементный объект или общее предпочтение для хранения ваших данных экрана настроек. , Затем в onStart MainActivity прочитайте одноэлементный объект или общее предпочтение и соответственно вызовите метод #setAudioSettings.

1 голос
/ 16 марта 2020

Сделайте этот метод как stati c, чтобы вы могли вызывать его без создания объекта класса

public static void yourMethod(){
//Write your code here
}

И вызывать свой метод следующим образом:

MainActivity.yourMethod();
0 голосов
/ 16 марта 2020

Вы можете сделать свой метод 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 также необходимо указать c.

Позже вы можете вызвать этот метод из любого действия:

MainActivity.setAudioSettings();

Подробнее о ключевом слове static можно узнать, например, здесь .

Но я не уверен, что использование метода stati c является лучшим решением именно для вашей проблемы, возможно, будет лучше установить SharedPreferences в вашем SettingActivity, а затем в onResume() вашего MainActivity вызова setAudioSettings() метод и получить там значения от SharedPreferences?

0 голосов
/ 16 марта 2020

сохранить настройки, т. Е. Значения в общих настройках, а затем получить из настроек в основной активности.

...