Add option to select input/output audio for speech

aprs 1.38
sh123 2022-08-16 10:59:33 +03:00
rodzic e9e5511fe7
commit 026e2798e9
4 zmienionych plików z 28 dodań i 31 usunięć

Wyświetl plik

@ -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);
}
}

Wyświetl plik

@ -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";

Wyświetl plik

@ -321,4 +321,6 @@
<string name="ports_sound_modem_freedv_data_title">Select data mode</string>
<string name="ports_sound_modem_audio_source_title">Audio source</string>
<string name="ports_sound_modem_audio_destination_title">Audio output</string>
<string name="app_audio_source_title">Audio source for speech</string>
<string name="app_audio_destination_title">Audio output for speech</string>
</resources>

Wyświetl plik

@ -5,6 +5,24 @@
app:key="app_category"
app:title="@string/app_category_title">
<ListPreference
app:key="app_audio_source"
app:title="@string/app_audio_source_title"
app:entries="@array/ports_sound_modem_audio_source_entries"
app:entryValues="@array/ports_sound_modem_audio_source_values"
app:defaultValue="0"
app:summary="%s">
</ListPreference>
<ListPreference
app:key="app_audio_destination"
app:title="@string/app_audio_destination_title"
app:entries="@array/ports_sound_modem_audio_destination_entries"
app:entryValues="@array/ports_sound_modem_audio_destination_values"
app:defaultValue="1"
app:summary="%s">
</ListPreference>
<SwitchPreference
app:key="app_volume_ptt"
app:title="@string/app_volume_ptt_title"
@ -41,20 +59,6 @@
app:defaultValue="false">
</SwitchPreference>
<SwitchPreference
app:key="app_audio_output_speaker"
app:title="@string/app_audio_output_speaker_title"
app:summary="@string/app_audio_output_speaker_summary"
app:defaultValue="true">
</SwitchPreference>
<SwitchPreference
app:key="app_audio_input_voice_communication"
app:title="@string/app_audio_input_voice_communication_title"
app:summary="@string/app_audio_input_voice_communication_summary"
app:defaultValue="false">
</SwitchPreference>
<SwitchPreference
app:key="app_notifications_voice"
app:title="@string/app_notifications_voice_enable_title"