diff --git a/codec2talkie/src/main/java/com/radio/codec2talkie/app/AppWorker.java b/codec2talkie/src/main/java/com/radio/codec2talkie/app/AppWorker.java index db87deb..e6acc98 100644 --- a/codec2talkie/src/main/java/com/radio/codec2talkie/app/AppWorker.java +++ b/codec2talkie/src/main/java/com/radio/codec2talkie/app/AppWorker.java @@ -98,19 +98,16 @@ public class AppWorker extends Thread { _processPeriodicTimer = new Timer(); - constructSystemAudioDevices(transportType); + int audioSource = Integer.parseInt(_sharedPreferences.getString(PreferenceKeys.APP_AUDIO_SOURCE, "6")); + int audioDestination = Integer.parseInt(_sharedPreferences.getString(PreferenceKeys.APP_AUDIO_DESTINATION, "1")); + constructSystemAudioDevices(transportType, audioSource, audioDestination); } - private void constructSystemAudioDevices(TransportFactory.TransportType transportType) { + private void constructSystemAudioDevices(TransportFactory.TransportType transportType, int audioSource, int audioDestination) { int _audioRecorderMinBufferSize = AudioRecord.getMinBufferSize( AUDIO_SAMPLE_SIZE, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT); - boolean isVoiceCommunication = _sharedPreferences.getBoolean(PreferenceKeys.APP_AUDIO_INPUT_VOICE_COMMUNICATION, false); - int audioSource = MediaRecorder.AudioSource.MIC; - if (isVoiceCommunication) { - audioSource = MediaRecorder.AudioSource.VOICE_COMMUNICATION; - } _systemAudioRecorder = new AudioRecord( audioSource, AUDIO_SAMPLE_SIZE, @@ -122,15 +119,9 @@ public class AppWorker extends Thread { AUDIO_SAMPLE_SIZE, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT); - - boolean isSpeakerOutput = _sharedPreferences.getBoolean(PreferenceKeys.APP_AUDIO_OUTPUT_SPEAKER, true); - int usage = AudioAttributes.USAGE_VOICE_COMMUNICATION; - if (isSpeakerOutput) { - usage = AudioAttributes.USAGE_MEDIA; - } _systemAudioPlayer = new AudioTrack.Builder() .setAudioAttributes(new AudioAttributes.Builder() - .setUsage(usage) + .setUsage(audioDestination) .setContentType(AudioAttributes.CONTENT_TYPE_SPEECH) .build()) .setAudioFormat(new AudioFormat.Builder() @@ -144,7 +135,7 @@ public class AppWorker extends Thread { // Use built in mic and speaker for speech when sound modem is in use if (transportType == TransportFactory.TransportType.SOUND_MODEM) { - selectBuiltinMicAndSpeakerEarpiece(isSpeakerOutput); + selectBuiltinMicAndSpeakerEarpiece(audioDestination != AudioAttributes.USAGE_VOICE_COMMUNICATION); } } diff --git a/codec2talkie/src/main/java/com/radio/codec2talkie/settings/PreferenceKeys.java b/codec2talkie/src/main/java/com/radio/codec2talkie/settings/PreferenceKeys.java index ccedce5..caa77cd 100644 --- a/codec2talkie/src/main/java/com/radio/codec2talkie/settings/PreferenceKeys.java +++ b/codec2talkie/src/main/java/com/radio/codec2talkie/settings/PreferenceKeys.java @@ -61,10 +61,10 @@ public final class PreferenceKeys { public static String APP_KEEP_SCREEN_ON = "app_keep_screen_on"; public static String APP_NO_LOCK = "app_no_lock"; public static String APP_TURN_SCREEN_ON = "app_turn_screen_on"; - public static String APP_AUDIO_OUTPUT_SPEAKER = "app_audio_output_speaker"; - public static String APP_AUDIO_INPUT_VOICE_COMMUNICATION = "app_audio_input_voice_communication"; public static String APP_NOTIFICATIONS_VOICE = "app_notifications_voice"; public static String APP_NO_CPU_SLEEP = "app_no_cpu_sleep"; + public static String APP_AUDIO_SOURCE = "app_audio_source"; + public static String APP_AUDIO_DESTINATION = "app_audio_destination"; public static String AX25_VOAX25_ENABLE = "aprs_voax25_enable"; public static String AX25_CALLSIGN = "aprs_callsign"; diff --git a/codec2talkie/src/main/res/values/strings.xml b/codec2talkie/src/main/res/values/strings.xml index dd6b6d6..aa13e8f 100644 --- a/codec2talkie/src/main/res/values/strings.xml +++ b/codec2talkie/src/main/res/values/strings.xml @@ -321,4 +321,6 @@ Select data mode Audio source Audio output + Audio source for speech + Audio output for speech \ No newline at end of file diff --git a/codec2talkie/src/main/res/xml/preferences.xml b/codec2talkie/src/main/res/xml/preferences.xml index 6fa746b..d143d76 100644 --- a/codec2talkie/src/main/res/xml/preferences.xml +++ b/codec2talkie/src/main/res/xml/preferences.xml @@ -5,6 +5,24 @@ app:key="app_category" app:title="@string/app_category_title"> + + + + + + - - - - - -