mirror of
https://github.com/nextcloud/talk-android
synced 2025-07-17 01:35:03 +01:00
add UI logic for wired headset
if wired headset is plugged in hide earpiece and speaker icons if wired headset is plugged out show earpiece and speaker icons Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
parent
a34eb89570
commit
51df0e67f4
@ -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<MagicAudioManager.AudioDevice> 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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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")
|
||||
}
|
||||
}
|
||||
|
10
app/src/main/res/drawable/ic_baseline_headset_mic_24.xml
Normal file
10
app/src/main/res/drawable/ic_baseline_headset_mic_24.xml
Normal file
@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M12,1c-4.97,0 -9,4.03 -9,9v7c0,1.66 1.34,3 3,3h3v-8H5v-2c0,-3.87 3.13,-7 7,-7s7,3.13 7,7v2h-4v8h4v1h-7v2h6c1.66,0 3,-1.34 3,-3V10c0,-4.97 -4.03,-9 -9,-9z"/>
|
||||
</vector>
|
@ -138,4 +138,37 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/audio_output_wired_headset"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:orientation="horizontal"
|
||||
android:paddingLeft="@dimen/standard_padding"
|
||||
android:paddingTop="@dimen/standard_half_padding"
|
||||
android:paddingRight="@dimen/standard_padding"
|
||||
android:paddingBottom="@dimen/standard_half_padding"
|
||||
tools:ignore="UseCompoundDrawables">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/audio_output_wired_headset_icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@null"
|
||||
android:src="@drawable/ic_baseline_headset_mic_24"
|
||||
app:tint="#99ffffff" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/audio_output_wired_headset_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="start|center_vertical"
|
||||
android:layout_marginStart="@dimen/standard_margin"
|
||||
android:text="@string/audio_output_wired_headset"
|
||||
android:textAlignment="viewStart"
|
||||
android:textColor="#99ffffff"
|
||||
android:textSize="@dimen/bottom_sheet_text_size" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -498,5 +498,6 @@
|
||||
<string name="audio_output_speaker">Speaker</string>
|
||||
<string name="audio_output_phone">Phone</string>
|
||||
<string name="audio_output_dialog_headline">Audio output</string>
|
||||
<string name="audio_output_wired_headset">Wired headset</string>
|
||||
|
||||
</resources>
|
||||
|
Loading…
Reference in New Issue
Block a user