highlight active audio output

use layout weight

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
Marcel Hibbe 2022-02-01 13:26:29 +01:00
parent 78b29082bf
commit ffb223a66f
No known key found for this signature in database
GPG key ID: C793F8B59F43CE7B
3 changed files with 86 additions and 34 deletions

View file

@ -173,6 +173,8 @@ public class CallActivity extends CallBaseActivity {
public static final String TAG = "CallActivity";
public MagicAudioManager audioManager;
private static final String[] PERMISSIONS_CALL = {
android.Manifest.permission.CAMERA,
android.Manifest.permission.RECORD_AUDIO,
@ -198,7 +200,6 @@ public class CallActivity extends CallBaseActivity {
private MediaConstraints videoConstraints;
private MediaConstraints sdpConstraints;
private MediaConstraints sdpConstraintsForMCU;
private MagicAudioManager audioManager;
private VideoSource videoSource;
private VideoTrack localVideoTrack;
private AudioSource audioSource;
@ -369,33 +370,6 @@ public class CallActivity extends CallBaseActivity {
});
}
public void setAudioOutputChannel(MagicAudioManager.AudioDevice audioDevice) {
if (audioManager == null) {
return;
}
audioManager.selectAudioDevice(audioDevice);
switch (audioManager.getResultingAudioDevice()) {
case BLUETOOTH:
binding.audioOutputButton.getHierarchy().setPlaceholderImage(
AppCompatResources.getDrawable(context, R.drawable.ic_baseline_bluetooth_audio_24));
break;
case SPEAKER_PHONE:
binding.audioOutputButton.getHierarchy().setPlaceholderImage(
AppCompatResources.getDrawable(context, R.drawable.ic_volume_up_white_24dp));
break;
case EARPIECE:
binding.audioOutputButton.getHierarchy().setPlaceholderImage(
AppCompatResources.getDrawable(context, R.drawable.ic_baseline_phone_in_talk_24));
break;
default:
Log.e(TAG, "Invalid audio device selection");
break;
}
DrawableCompat.setTint(binding.audioOutputButton.getDrawable(), Color.WHITE);
}
private void createCameraEnumerator() {
boolean camera2EnumeratorIsSupported = false;
try {
@ -441,6 +415,12 @@ public class CallActivity extends CallBaseActivity {
Log.d(TAG, "Starting the audio manager...");
audioManager.start(this::onAudioManagerDevicesChanged);
if (isVoiceOnlyCall) {
setAudioOutputChannel(MagicAudioManager.AudioDevice.EARPIECE);
} else {
setAudioOutputChannel(MagicAudioManager.AudioDevice.SPEAKER_PHONE);
}
iceServers = new ArrayList<>();
//create sdpConstraints
@ -471,6 +451,33 @@ public class CallActivity extends CallBaseActivity {
microphoneInitialization();
}
public void setAudioOutputChannel(MagicAudioManager.AudioDevice selectedAudioDevice) {
if (audioManager == null) {
return;
}
audioManager.selectAudioDevice(selectedAudioDevice);
switch (audioManager.getResultingAudioDevice()) {
case BLUETOOTH:
binding.audioOutputButton.getHierarchy().setPlaceholderImage(
AppCompatResources.getDrawable(context, R.drawable.ic_baseline_bluetooth_audio_24));
break;
case SPEAKER_PHONE:
binding.audioOutputButton.getHierarchy().setPlaceholderImage(
AppCompatResources.getDrawable(context, R.drawable.ic_volume_up_white_24dp));
break;
case EARPIECE:
binding.audioOutputButton.getHierarchy().setPlaceholderImage(
AppCompatResources.getDrawable(context, R.drawable.ic_baseline_phone_in_talk_24));
break;
default:
Log.e(TAG, "Icon for audio output not available");
break;
}
DrawableCompat.setTint(binding.audioOutputButton.getDrawable(), Color.WHITE);
}
private void handleFromNotification() {
int apiVersion = ApiUtils.getConversationApiVersion(conversationUser, new int[]{ApiUtils.APIv4, 1});

View file

@ -2,9 +2,7 @@
* Nextcloud Talk application
*
* @author Marcel Hibbe
* @author Andy Scherzinger
* Copyright (C) 2021 Marcel Hibbe <dev@mhibbe.de>
* Copyright (C) 2021 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2022 Marcel Hibbe <dev@mhibbe.de>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -23,8 +21,10 @@
package com.nextcloud.talk.ui.dialog
import android.os.Bundle
import android.util.Log
import android.view.View
import android.view.ViewGroup
import androidx.core.content.ContextCompat
import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog
import com.nextcloud.talk.R
@ -42,7 +42,52 @@ class AudioOutputDialog(val callActivity: CallActivity) : BottomSheetDialog(call
setContentView(dialogAudioOutputBinding.root)
window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
highlightActiveOutputChannel()
initClickListeners()
}
private fun highlightActiveOutputChannel() {
when (callActivity.audioManager?.resultingAudioDevice) {
MagicAudioManager.AudioDevice.BLUETOOTH -> {
dialogAudioOutputBinding.audioOutputBluetoothIcon.setColorFilter(
ContextCompat.getColor(
context, R.color
.colorPrimary
), android.graphics.PorterDuff.Mode.SRC_IN
)
dialogAudioOutputBinding.audioOutputBluetoothText.setTextColor(
callActivity.resources.getColor(
R.color
.colorPrimary
)
)
}
MagicAudioManager.AudioDevice.SPEAKER_PHONE -> {
dialogAudioOutputBinding.audioOutputSpeakerIcon.setColorFilter(
ContextCompat.getColor(
context,
R.color.colorPrimary
), android.graphics.PorterDuff.Mode.SRC_IN
)
dialogAudioOutputBinding.audioOutputSpeakerText.setTextColor(callActivity.resources.getColor(R.color.colorPrimary))
}
MagicAudioManager.AudioDevice.EARPIECE -> {
dialogAudioOutputBinding.audioOutputEarspeakerIcon.setColorFilter(
ContextCompat.getColor(
context,
R.color.colorPrimary
), android.graphics.PorterDuff.Mode.SRC_IN
)
dialogAudioOutputBinding.audioOutputEarspeakerText.setTextColor(callActivity.resources.getColor(R.color.colorPrimary))
}
else -> Log.d(TAG, "AudioOutputDialog doesn't know this AudioDevice")
}
}
private fun initClickListeners() {
dialogAudioOutputBinding.audioOutputBluetooth.setOnClickListener {
callActivity.setAudioOutputChannel(MagicAudioManager.AudioDevice.BLUETOOTH)
dismiss()

View file

@ -57,7 +57,7 @@
android:layout_height="wrap_content"
android:contentDescription="@null"
android:src="@drawable/ic_baseline_bluetooth_audio_24"
app:tint="@color/colorPrimary" />
app:tint="#99ffffff" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/audio_output_bluetooth_text"
@ -90,7 +90,7 @@
android:layout_height="wrap_content"
android:contentDescription="@null"
android:src="@drawable/ic_volume_up_white_24dp"
app:tint="@color/colorPrimary" />
app:tint="#99ffffff" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/audio_output_speaker_text"
@ -123,7 +123,7 @@
android:layout_height="wrap_content"
android:contentDescription="@null"
android:src="@drawable/ic_baseline_phone_in_talk_24"
app:tint="@color/colorPrimary" />
app:tint="#99ffffff" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/audio_output_earspeaker_text"