Skip to content

Commit 1e45b15

Browse files
atm1504iamareebjamal
authored andcommitted
feat: Speaks welcome message when voice used for first time (#2093)
1 parent 082442b commit 1e45b15

File tree

10 files changed

+58
-3
lines changed

10 files changed

+58
-3
lines changed

app/src/main/java/org/fossasia/susi/ai/chat/STTfragment.kt

Lines changed: 48 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@ package org.fossasia.susi.ai.chat
33
import android.content.Context
44
import android.content.Intent
55
import android.os.Bundle
6+
import android.os.Handler
67
import android.speech.RecognitionListener
78
import android.speech.RecognizerIntent
89
import android.speech.SpeechRecognizer
10+
import android.speech.tts.TextToSpeech
911
import android.support.annotation.NonNull
1012
import android.support.v4.app.Fragment
1113
import android.support.v7.widget.LinearLayoutManager
@@ -19,6 +21,7 @@ import kotlinx.android.synthetic.main.fragment_sttframe.view.*
1921
import org.fossasia.susi.ai.R
2022
import org.fossasia.susi.ai.chat.adapters.recycleradapters.VoiceCommandsAdapter
2123
import org.fossasia.susi.ai.chat.contract.IChatPresenter
24+
import org.fossasia.susi.ai.helper.PrefManager
2225
import timber.log.Timber
2326
import java.util.Locale
2427

@@ -29,6 +32,9 @@ class STTFragment : Fragment() {
2932
lateinit var recognizer: SpeechRecognizer
3033
lateinit var chatPresenter: IChatPresenter
3134
private val thisActivity = activity
35+
private var textToSpeech: TextToSpeech? = null
36+
private val mainHandler: Handler = Handler()
37+
private val subHandler: Handler = Handler()
3238

3339
override fun onAttach(context: Context?) {
3440
super.onAttach(context)
@@ -40,17 +46,49 @@ class STTFragment : Fragment() {
4046
val rootView = inflater.inflate(R.layout.fragment_sttframe, container, false)
4147
if (thisActivity is ChatActivity)
4248
thisActivity.fabsetting.hide()
43-
promptSpeechInput()
4449
setupCommands(rootView)
4550
return rootView
4651
}
4752

53+
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
54+
55+
recognizer = SpeechRecognizer
56+
.createSpeechRecognizer(activity?.applicationContext)
57+
58+
mainHandler.post(runnable)
59+
if (!PrefManager.getBoolean(R.string.used_voice, true)) {
60+
subHandler.postDelayed(delayRunnable, 1500)
61+
}
62+
63+
super.onViewCreated(view, savedInstanceState)
64+
}
65+
66+
private val runnable: Runnable = Runnable {
67+
textToSpeech = TextToSpeech(requireContext(), TextToSpeech.OnInitListener { status ->
68+
if (status != TextToSpeech.ERROR) {
69+
val locale = textToSpeech?.language
70+
textToSpeech?.language = locale
71+
if (!PrefManager.getBoolean(R.string.used_voice, false)) {
72+
textToSpeech?.speak(getString(R.string.voice_welcome), TextToSpeech.QUEUE_FLUSH, null)
73+
PrefManager.putBoolean(R.string.used_voice, true)
74+
} else {
75+
promptSpeechInput()
76+
}
77+
}
78+
})
79+
}
80+
81+
private val delayRunnable: Runnable = Runnable {
82+
promptSpeechInput()
83+
}
84+
4885
private fun setupCommands(rootView: View) {
4986
var voiceCommand = getResources().getStringArray(R.array.voiceCommands)
5087
var voiceCommandsList = voiceCommand.toCollection(ArrayList())
5188
rootView.clickableCommands.layoutManager = LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL, false)
5289
rootView.clickableCommands.adapter = VoiceCommandsAdapter(voiceCommandsList, activity)
5390
}
91+
5492
private fun promptSpeechInput() {
5593
val intent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH)
5694
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
@@ -62,8 +100,6 @@ class STTFragment : Fragment() {
62100
intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS, 5000)
63101
intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, 5000)
64102

65-
recognizer = SpeechRecognizer
66-
.createSpeechRecognizer(activity?.applicationContext)
67103
val listener = object : RecognitionListener {
68104
override fun onResults(results: Bundle) {
69105
val voiceResults = results
@@ -145,7 +181,16 @@ class STTFragment : Fragment() {
145181
thisActivity.enableVoiceInput()
146182
thisActivity.fabsetting.show()
147183
}
184+
if (textToSpeech != null) {
185+
textToSpeech?.stop()
186+
}
148187
recognizer.cancel()
149188
recognizer.destroy()
150189
}
190+
191+
override fun onDestroyView() {
192+
super.onDestroyView()
193+
mainHandler.removeCallbacks(runnable)
194+
subHandler.removeCallbacks(delayRunnable)
195+
}
151196
}

app/src/main/java/org/fossasia/susi/ai/login/WelcomeActivity.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ class WelcomeActivity : AppCompatActivity() {
4848
override fun onCreate(savedInstanceState: Bundle?) {
4949
super.onCreate(savedInstanceState)
5050

51+
PrefManager.putBoolean(R.string.used_voice, false)
5152
if (PrefManager.getBoolean(R.string.activity_executed_key, false)) {
5253
val intent = Intent(this, LoginActivity::class.java)
5354
startActivity(intent)

app/src/main/res/values-de/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
<string name="hotword_success">Hotword erkannt</string>
2929
<string name="custom_server">Benutzerdefinierter Server</string>
3030
<string name="settings_visit_website">Besuche die Website</string>
31+
<string name="voice_welcome">Hallo! Womit kann ich Ihnen behilflich sein?</string>
3132

3233
<string name="signup">Vielen dank für deine Registrierung</string>
3334
<string name="signup_msg">Wir haben eine E-Mail an die angegebene Adresse gesendet. Bitte benutzen Sie die

app/src/main/res/values-es/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
<string name="hotword_success">Hotword detectado</string>
2828
<string name="custom_server">servidor personalizado</string>
2929
<string name="settings_visit_website">Visita la página web</string>
30+
<string name="voice_welcome">¡Hola! ¿Como puedo ayudarte?</string>
3031

3132
<string name="activity_executed_key" translatable="false">activity_executed</string>
3233
<string name="anonymous_logged_in_key" translatable="false">anonymous_logged_in</string>

app/src/main/res/values-hi/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
<string name="dialog_retrieve_messages_title">पुराना संदेश पुनर्प्राप्त करना ...</string>
2828
<string name="hotword_success">हॉटवर्ड का पता चला</string>
2929
<string name="settings_visit_website">बेवसाइट देखना</string>
30+
<string name="voice_welcome">नमस्ते! में आपकी कैसे मदद कर सकता हूं?</string>
3031

3132
<string name="signup">साइन अप करने के लिए आभार</string>
3233
<string name="signup_msg">हमने आपके द्वारा प्रदान किए गए पते पर एक ईमेल भेजा है। कृपया का उपयोग करें

app/src/main/res/values-it/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
<string name="hotword_success">Hotword rilevata</string>
2828
<string name="custom_server">server personalizzato</string>
2929
<string name="settings_visit_website">Visita il sito web</string>
30+
<string name="voice_welcome">Ciao! Come posso aiutarla?</string>
3031

3132
<string name="email_not_registered">L\'email che hai inserito non è registrata con noi. Per favore riprova.</string>
3233
<string name="email_not_registered_title">registrazione email</string>

app/src/main/res/values-ml-rIN/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,7 @@
320320
<string name="accept_terms_and_conditions">സൈൻ അപ് ചെയ്യുന്നതിന് നിങ്ങൾ നിബന്ധനകളും വ്യവസ്ഥകളും അംഗീകരിക്കണം</string>
321321
<string name="accept_terms_conditions">നിബന്ധനകളും വ്യവസ്ഥകളും ഞാൻ അംഗീകരിക്കുന്നു</string>
322322
<string name="settings_visit_website">വെബ്സൈറ്റ് സന്ദർശിക്കുക</string>
323+
<string name="voice_welcome">ഹായ്! എനിക്ക് നിങ്ങളെ എങ്ങനെ സഹായിക്കാനാകും?</string>
323324
<string name="error_skipping_signUp_process_text">ഇത് സൈൻ അപ്പ് പ്രോസസ്സ് റദ്ദാക്കുകയും ചാറ്റ് പേജിലേക്ക് നിങ്ങളെ റീഡയറക്ട് ചെയ്യുകയും ചെയ്യും.</string>
324325
<string name="dialog_skip_sign_up">സൈൻ അപ് ചെയ്യണോ?</string>
325326
<string name="settings_help">உதவி</string>

app/src/main/res/values-pt-rBR/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
<string name="hotword_success">Hotword detectada</string>
2727
<string name="custom_server">servidor customizado</string>
2828
<string name="settings_visit_website">Visite o site</string>
29+
<string name="voice_welcome">Oi! Como posso ajudá-lo?</string>
2930

3031
<string name="signup">Obrigado pelo seu registro</string>
3132
<string name="signup_msg">Enviamos um email para o endereço fornecido. Por favor use o

app/src/main/res/values-ta-rIN/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,7 @@
318318
<string name="accept_terms_and_conditions">பதிவு செய்ய நீங்கள் விதிமுறைகள் மற்றும் நிபந்தனைகளை ஏற்க வேண்டும்</string>
319319
<string name="accept_terms_conditions">நான் நியதிகளும் நிபந்தனைகள் ஒத்துகொள்கிறேன்</string>
320320
<string name="settings_visit_website">வலைத்தளத்தைப் பார்வையிடவும்</string>
321+
<string name="voice_welcome">வணக்கம்! நான் எப்படி உங்களுக்கு உதவ முடியும்?</string>
321322
<string name="error_skipping_signUp_process_text">இது உள்நுழைவு செயல்முறையை ரத்துசெய்து, அரட்டை பக்கத்திற்கு உங்களை திருப்பி விடுகிறது.</string>
322323
<string name="dialog_skip_sign_up">உள்நுழையவும்?</string>
323324
<string name="settings_help">സഹായിക്കൂ</string>

app/src/main/res/values/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
<string name="action_settings">Settings</string>
1111
<string name="action_share">Share</string>
1212
<string name="action_wall_settings">Wallpaper</string>
13+
<string name="used_voice" translatable="false">Used Voice before?</string>
14+
<string name="voice_welcome">Hi! How can I help you?</string>
1315

1416
<string name="background_no_wall">no_wall</string>
1517

0 commit comments

Comments
 (0)