From c20a82640e91c0a08aec05821b99f74efad3d739 Mon Sep 17 00:00:00 2001 From: root21 Date: Mon, 11 Oct 2021 09:38:13 -0600 Subject: [PATCH] Cleaned up DTMF code and click handling. Min API version change was required for user interface lambdas. --- build.gradle | 2 +- .../conversations/ui/RtpSessionActivity.java | 27 +++---------------- .../conversations/ui/widget/DialpadView.java | 12 +++++---- .../xmpp/jingle/JingleRtpConnection.java | 7 ----- .../xmpp/jingle/WebRTCWrapper.java | 5 ---- src/main/res/layout/activity_rtp_session.xml | 10 +++---- 6 files changed, 17 insertions(+), 46 deletions(-) diff --git a/build.gradle b/build.gradle index 2a070856a328c440e15b335fb14858925fb434a3..d57de07d218aa44cd46732035b9bb13e11079ea6 100644 --- a/build.gradle +++ b/build.gradle @@ -90,7 +90,7 @@ android { compileSdkVersion 29 defaultConfig { - minSdkVersion 21 + minSdkVersion 24 targetSdkVersion 29 versionCode 42024 versionName "2.10.3-beta" diff --git a/src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java b/src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java index 2f08eff86c966e494bbc5d578ba5101688989474..7fb120d88707d958f8625978ba1b7e678bbc210f 100644 --- a/src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java @@ -57,6 +57,7 @@ import eu.siacs.conversations.entities.Contact; import eu.siacs.conversations.entities.Conversation; import eu.siacs.conversations.services.AppRTCAudioManager; import eu.siacs.conversations.services.XmppConnectionService; +import eu.siacs.conversations.ui.widget.DialpadView; import eu.siacs.conversations.ui.util.AvatarWorkerTask; import eu.siacs.conversations.ui.util.MainThreadExecutor; import eu.siacs.conversations.ui.util.Rationals; @@ -151,36 +152,16 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe this.binding = DataBindingUtil.setContentView(this, R.layout.activity_rtp_session); setSupportActionBar(binding.toolbar); - //TODO: remove this - for testing dialpad input - //((DialpadView)findViewById(R.id.action_dialpad)). - - findViewById(R.id.dialpad_1_holder).setOnClickListener(view -> dialpadPressed(view)); - findViewById(R.id.dialpad_2_holder).setOnClickListener(view -> dialpadPressed(view)); - findViewById(R.id.dialpad_3_holder).setOnClickListener(view -> dialpadPressed(view)); - findViewById(R.id.dialpad_4_holder).setOnClickListener(view -> dialpadPressed(view)); - findViewById(R.id.dialpad_5_holder).setOnClickListener(view -> dialpadPressed(view)); - findViewById(R.id.dialpad_6_holder).setOnClickListener(view -> dialpadPressed(view)); - findViewById(R.id.dialpad_7_holder).setOnClickListener(view -> dialpadPressed(view)); - findViewById(R.id.dialpad_8_holder).setOnClickListener(view -> dialpadPressed(view)); - findViewById(R.id.dialpad_9_holder).setOnClickListener(view -> dialpadPressed(view)); - findViewById(R.id.dialpad_0_holder).setOnClickListener(view -> dialpadPressed(view)); - findViewById(R.id.dialpad_asterisk_holder).setOnClickListener(view -> dialpadPressed(view)); - findViewById(R.id.dialpad_pound_holder).setOnClickListener(view -> dialpadPressed(view)); + binding.dialpad.setClickConsumer(tag -> { + requireRtpConnection().applyDtmfTone(tag); + }); if (savedInstanceState != null) { int dialpad_visibility = savedInstanceState.getInt("dialpad_visibility"); - System.out.println("dialpad_visibility onCreate = " + dialpad_visibility); findViewById(R.id.dialpad).setVisibility(dialpad_visibility); } } - - - private void dialpadPressed(View dialpadKeyHolderView) { - JingleRtpConnection rtpConnection = requireRtpConnection(); - rtpConnection.applyDtmfTone(dialpadKeyHolderView.getTag().toString()); - } - @Override public boolean onCreateOptionsMenu(final Menu menu) { getMenuInflater().inflate(R.menu.activity_rtp_session, menu); diff --git a/src/main/java/eu/siacs/conversations/ui/widget/DialpadView.java b/src/main/java/eu/siacs/conversations/ui/widget/DialpadView.java index 3bd13541d54c774c3b0a29e8b41a6e5267cf737e..5b16dce17230ede9937db7e61c65c242a9018a7b 100644 --- a/src/main/java/eu/siacs/conversations/ui/widget/DialpadView.java +++ b/src/main/java/eu/siacs/conversations/ui/widget/DialpadView.java @@ -23,10 +23,11 @@ import android.view.View; import androidx.constraintlayout.widget.ConstraintLayout; import eu.siacs.conversations.R; -import eu.siacs.conversations.xmpp.jingle.JingleRtpConnection; public class DialpadView extends ConstraintLayout implements View.OnClickListener { + protected java.util.function.Consumer clickConsumer = null; + public DialpadView(Context context) { super(context); init(); @@ -42,6 +43,10 @@ public class DialpadView extends ConstraintLayout implements View.OnClickListene init(); } + public void setClickConsumer(java.util.function.Consumer clickConsumer) { + this.clickConsumer = clickConsumer; + } + private void init() { inflate(getContext(), R.layout.dialpad, this); initViews(); @@ -64,10 +69,7 @@ public class DialpadView extends ConstraintLayout implements View.OnClickListene @Override public void onClick(View v) { - /* TODO: this widget doesn't know anything about the RTP Connection, - so how to make this widget generic but also able to send touch-tone sounds - */ - System.out.println("v.getTag() = " + v.getTag()); + clickConsumer.accept(v.getTag().toString()); } } diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleRtpConnection.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleRtpConnection.java index f221d6fadd464de0b8b07a6792945e23e35481c6..46d89ec3f84e073f9704549ef8aeab915f6ef8fb 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleRtpConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleRtpConnection.java @@ -232,17 +232,10 @@ public class JingleRtpConnection extends AbstractJingleConnection implements Web } } - //TODO: remove - hack to test dtmfSending - public DtmfSender getDtmfSender() { - return webRTCWrapper.getDtmfSender(); - } - - //FIXME: possible implementation public boolean applyDtmfTone(String tone) { return webRTCWrapper.applyDtmfTone(tone); } - private void receiveSessionTerminate(final JinglePacket jinglePacket) { respondOk(jinglePacket); final JinglePacket.ReasonWrapper wrapper = jinglePacket.getReason(); diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/WebRTCWrapper.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/WebRTCWrapper.java index ae001ac610406488dc0388dd0d6fb1ab8d4b7863..a579ccd77bb219f7a8ba8e2d5a6579656085482e 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/jingle/WebRTCWrapper.java +++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/WebRTCWrapper.java @@ -530,11 +530,6 @@ public class WebRTCWrapper { return peerConnection; } - //TODO: remove - hack to test dtmfSending - public DtmfSender getDtmfSender() { - return peerConnection.getSenders().get(0).dtmf(); - } - public boolean applyDtmfTone(String tone) { if (toneManager == null || peerConnection.getSenders().isEmpty()) { return false; diff --git a/src/main/res/layout/activity_rtp_session.xml b/src/main/res/layout/activity_rtp_session.xml index fc37e7df8e37967179cf251d1c0a7df4fd85375a..a9c51087fe298c34ab3b23a9133f6dc0d21e5330 100644 --- a/src/main/res/layout/activity_rtp_session.xml +++ b/src/main/res/layout/activity_rtp_session.xml @@ -171,7 +171,7 @@ app:elevation="4dp" app:fabCustomSize="72dp" app:maxImageSize="36dp" - tools:visibility="gone" /> + tools:visibility="visible" /> + tools:visibility="visible" /> @@ -197,7 +197,7 @@ android:layout_centerVertical="true" android:layout_margin="@dimen/in_call_fab_margin" android:layout_toStartOf="@+id/end_call" - android:visibility="visible" + android:visibility="gone" app:backgroundTint="?color_background_primary" app:elevation="4dp" app:fabSize="mini" @@ -223,7 +223,7 @@ android:layout_centerVertical="true" android:layout_margin="@dimen/in_call_fab_margin" android:layout_toEndOf="@+id/end_call" - android:visibility="visible" + android:visibility="gone" app:backgroundTint="?color_background_primary" app:elevation="4dp" app:fabSize="mini" @@ -236,7 +236,7 @@ android:layout_centerVertical="true" android:layout_margin="@dimen/in_call_fab_margin" android:layout_toEndOf="@+id/in_call_action_right" - android:visibility="visible" + android:visibility="gone" app:backgroundTint="?color_background_primary" app:elevation="4dp" app:fabSize="mini"