diff --git a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java index cbcf78fcf..ef0b9a612 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java +++ b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java @@ -475,6 +475,10 @@ public class CallActivity extends CallBaseActivity { binding.audioOutputButton.getHierarchy().setPlaceholderImage( AppCompatResources.getDrawable(context, R.drawable.ic_baseline_phone_in_talk_24)); break; + case WIRED_HEADSET: + binding.audioOutputButton.getHierarchy().setPlaceholderImage( + AppCompatResources.getDrawable(context, R.drawable.ic_baseline_headset_mic_24)); + break; default: Log.e(TAG, "Icon for audio output not available"); break; @@ -745,14 +749,14 @@ public class CallActivity extends CallBaseActivity { } private void onAudioManagerDevicesChanged( - final MagicAudioManager.AudioDevice device, + final MagicAudioManager.AudioDevice currentDevice, final Set availableDevices) { Log.d(TAG, "onAudioManagerDevicesChanged: " + availableDevices + ", " - + "result: " + device); + + "currentDevice: " + currentDevice); - final boolean shouldDisableProximityLock = (device.equals(MagicAudioManager.AudioDevice.WIRED_HEADSET) - || device.equals(MagicAudioManager.AudioDevice.SPEAKER_PHONE) - || device.equals(MagicAudioManager.AudioDevice.BLUETOOTH)); + final boolean shouldDisableProximityLock = (currentDevice.equals(MagicAudioManager.AudioDevice.WIRED_HEADSET) + || currentDevice.equals(MagicAudioManager.AudioDevice.SPEAKER_PHONE) + || currentDevice.equals(MagicAudioManager.AudioDevice.BLUETOOTH)); if (shouldDisableProximityLock) { powerManagerUtils.updatePhoneState(PowerManagerUtils.PhoneState.WITHOUT_PROXIMITY_SENSOR_LOCK); @@ -760,10 +764,10 @@ public class CallActivity extends CallBaseActivity { powerManagerUtils.updatePhoneState(PowerManagerUtils.PhoneState.WITH_PROXIMITY_SENSOR_LOCK); } - if (audioOutputDialog != null){ + if (audioOutputDialog != null) { audioOutputDialog.updateOutputDeviceList(); } - updateAudioOutputButton(device); + updateAudioOutputButton(currentDevice); } diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/AudioOutputDialog.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/AudioOutputDialog.kt index 74933562a..efb3d65b8 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/AudioOutputDialog.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/AudioOutputDialog.kt @@ -43,22 +43,37 @@ class AudioOutputDialog(val callActivity: CallActivity) : BottomSheetDialog(call window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) updateOutputDeviceList() - highlightActiveOutputChannel() initClickListeners() } fun updateOutputDeviceList() { - if (callActivity.audioManager?.audioDevices?.contains(MagicAudioManager.AudioDevice.BLUETOOTH) == false){ + if (callActivity.audioManager?.audioDevices?.contains(MagicAudioManager.AudioDevice.BLUETOOTH) == false) { dialogAudioOutputBinding.audioOutputBluetooth.visibility = View.GONE } else { dialogAudioOutputBinding.audioOutputBluetooth.visibility = View.VISIBLE } - if (callActivity.audioManager?.audioDevices?.contains(MagicAudioManager.AudioDevice.EARPIECE) == false){ + if (callActivity.audioManager?.audioDevices?.contains(MagicAudioManager.AudioDevice.EARPIECE) == false) { dialogAudioOutputBinding.audioOutputEarspeaker.visibility = View.GONE } else { dialogAudioOutputBinding.audioOutputEarspeaker.visibility = View.VISIBLE } + + if (callActivity.audioManager?.audioDevices?.contains(MagicAudioManager.AudioDevice.SPEAKER_PHONE) == false) { + dialogAudioOutputBinding.audioOutputSpeaker.visibility = View.GONE + } else { + dialogAudioOutputBinding.audioOutputSpeaker.visibility = View.VISIBLE + } + + if (callActivity.audioManager?.currentAudioDevice?.equals(MagicAudioManager.AudioDevice.WIRED_HEADSET) == true) { + dialogAudioOutputBinding.audioOutputEarspeaker.visibility = View.GONE + dialogAudioOutputBinding.audioOutputSpeaker.visibility = View.GONE + dialogAudioOutputBinding.audioOutputWiredHeadset.visibility = View.VISIBLE + } else { + dialogAudioOutputBinding.audioOutputWiredHeadset.visibility = View.GONE + } + + highlightActiveOutputChannel() } private fun highlightActiveOutputChannel() { @@ -98,6 +113,17 @@ class AudioOutputDialog(val callActivity: CallActivity) : BottomSheetDialog(call dialogAudioOutputBinding.audioOutputEarspeakerText.setTextColor(callActivity.resources.getColor(R.color.colorPrimary)) } + MagicAudioManager.AudioDevice.WIRED_HEADSET -> { + dialogAudioOutputBinding.audioOutputWiredHeadsetIcon.setColorFilter( + ContextCompat.getColor( + context, + R.color.colorPrimary + ), android.graphics.PorterDuff.Mode.SRC_IN + ) + dialogAudioOutputBinding.audioOutputWiredHeadsetText.setTextColor(callActivity.resources.getColor(R.color + .colorPrimary)) + } + else -> Log.d(TAG, "AudioOutputDialog doesn't know this AudioDevice") } } diff --git a/app/src/main/res/drawable/ic_baseline_headset_mic_24.xml b/app/src/main/res/drawable/ic_baseline_headset_mic_24.xml new file mode 100644 index 000000000..31cc591d0 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_headset_mic_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/dialog_audio_output.xml b/app/src/main/res/layout/dialog_audio_output.xml index d9cba1c14..6b136a302 100644 --- a/app/src/main/res/layout/dialog_audio_output.xml +++ b/app/src/main/res/layout/dialog_audio_output.xml @@ -138,4 +138,37 @@ + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 00e94ad71..2bef3843a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -498,5 +498,6 @@ Speaker Phone Audio output + Wired headset