diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/CallActivity.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/CallActivity.kt index 42bdb03d..d871f581 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/CallActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/CallActivity.kt @@ -205,6 +205,7 @@ class CallActivity : SimpleActivity() { } call_sim_id.setTextColor(getProperTextColor().getContrastColor()) + dialpad_input.disableKeyboard() } @SuppressLint("ClickableViewAccessibility") diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/DialpadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/DialpadActivity.kt index bb7aba04..e2275f27 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/DialpadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/DialpadActivity.kt @@ -24,6 +24,7 @@ import com.simplemobiletools.commons.models.SimpleContact import com.simplemobiletools.dialer.R import com.simplemobiletools.dialer.adapters.ContactsAdapter import com.simplemobiletools.dialer.extensions.* +import com.simplemobiletools.dialer.helpers.DIALPAD_TONE_LENGTH_MS import com.simplemobiletools.dialer.helpers.ToneGeneratorHelper import com.simplemobiletools.dialer.models.SpeedDial import kotlinx.android.synthetic.main.activity_dialpad.* @@ -55,9 +56,9 @@ class DialpadActivity : SimpleActivity() { setupOptionsMenu() speedDialValues = config.getSpeedDialValues() - privateCursor = getMyContactsCursor(false, true) + privateCursor = getMyContactsCursor(favoritesOnly = false, withPhoneNumbersOnly = true) - toneGeneratorHelper = ToneGeneratorHelper(this) + toneGeneratorHelper = ToneGeneratorHelper(this, DIALPAD_TONE_LENGTH_MS) if (hasRussianLocale) { initRussianChars() @@ -99,7 +100,7 @@ class DialpadActivity : SimpleActivity() { dialpad_input.requestFocus() SimpleContactsHelper(this).getAvailableContacts(false) { gotContacts(it) } - disableKeyboardPopping() + dialpad_input.disableKeyboard() val properPrimaryColor = getProperPrimaryColor() val callIconId = if (areMultipleSIMsAvailable()) { @@ -179,10 +180,6 @@ class DialpadActivity : SimpleActivity() { dialpad_input.setText("") } - private fun disableKeyboardPopping() { - dialpad_input.showSoftInputOnFocus = false - } - private fun gotContacts(newContacts: ArrayList) { allContacts = newContacts diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/extensions/EditText.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/extensions/EditText.kt index 1aca7e25..4fd2d896 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/extensions/EditText.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/extensions/EditText.kt @@ -24,3 +24,7 @@ private fun getCharKeyCode(char: Char) = when (char) { '+' -> KeyEvent.KEYCODE_PLUS else -> KeyEvent.KEYCODE_POUND } + +fun EditText.disableKeyboard() { + showSoftInputOnFocus = false +} diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/extensions/View.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/extensions/View.kt index 60980027..40119dc1 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/extensions/View.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/extensions/View.kt @@ -5,4 +5,3 @@ import android.view.View val View.boundingBox get() = Rect().also { getGlobalVisibleRect(it) } - diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/ToneGeneratorHelper.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/ToneGeneratorHelper.kt index f2008ecc..b20e9b62 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/ToneGeneratorHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/ToneGeneratorHelper.kt @@ -4,16 +4,20 @@ import android.content.Context import android.media.AudioManager import android.media.AudioManager.STREAM_DTMF import android.media.ToneGenerator +import android.os.Handler +import android.os.Looper -class ToneGeneratorHelper(context: Context) { +class ToneGeneratorHelper(context: Context, private val minToneLengthMs: Long) { private val audioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager private val toneGenerator = ToneGenerator(DIAL_TONE_STREAM_TYPE, TONE_RELATIVE_VOLUME) + private var toneStartTimeMs = 0L private fun isSilent(): Boolean { return audioManager.ringerMode in arrayOf(AudioManager.RINGER_MODE_SILENT, AudioManager.RINGER_MODE_VIBRATE) } fun startTone(char: Char) { + toneStartTimeMs = System.currentTimeMillis() startTone(charToTone[char] ?: -1) } @@ -23,7 +27,16 @@ class ToneGeneratorHelper(context: Context) { } } - fun stopTone() = toneGenerator.stopTone() + fun stopTone() { + val timeSinceStartMs = System.currentTimeMillis() - toneStartTimeMs + if (timeSinceStartMs < minToneLengthMs) { + Handler(Looper.getMainLooper()).postDelayed({ + toneGenerator.stopTone() + }, minToneLengthMs - timeSinceStartMs) + } else { + toneGenerator.stopTone() + } + } companion object { const val TONE_RELATIVE_VOLUME = 80 // The DTMF tone volume relative to other sounds in the stream diff --git a/app/src/main/res/layout/activity_dialpad.xml b/app/src/main/res/layout/activity_dialpad.xml index 85669f68..27eeff38 100644 --- a/app/src/main/res/layout/activity_dialpad.xml +++ b/app/src/main/res/layout/activity_dialpad.xml @@ -89,6 +89,7 @@ android:layout_marginStart="@dimen/activity_margin" android:gravity="center" android:inputType="phone" + android:layoutDirection="ltr" android:textCursorDrawable="@null" android:textSize="@dimen/dialpad_text_size" app:layout_constraintBottom_toTopOf="@+id/dialpad_wrapper" @@ -101,6 +102,7 @@ android:layout_height="0dp" android:layout_marginEnd="@dimen/activity_margin" android:background="?attr/selectableItemBackgroundBorderless" + android:layoutDirection="ltr" android:paddingStart="@dimen/activity_margin" android:paddingEnd="@dimen/activity_margin" android:src="@drawable/ic_clear_vector" diff --git a/app/src/main/res/layout/dialpad.xml b/app/src/main/res/layout/dialpad.xml index 15a81bd5..8db0614f 100644 --- a/app/src/main/res/layout/dialpad.xml +++ b/app/src/main/res/layout/dialpad.xml @@ -7,6 +7,7 @@ android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:focusableInTouchMode="true" + android:layoutDirection="ltr" android:paddingTop="@dimen/medium_margin" tools:ignore="HardcodedText">