diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
index 29be743..7abab4c 100644
Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ
diff --git a/app/release/app-release.apk b/app/release/app-release.apk
index 5b09048..a00ece7 100644
Binary files a/app/release/app-release.apk and b/app/release/app-release.apk differ
diff --git a/app/release/output.json b/app/release/output.json
index 0d530ea..41524b3 100644
--- a/app/release/output.json
+++ b/app/release/output.json
@@ -1 +1 @@
-[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":4,"versionName":"2.0","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
\ No newline at end of file
+[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":5,"versionName":"2.0","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
\ No newline at end of file
diff --git a/app/src/main/java/adrienmalin/pingpoints/MatchActivity.kt b/app/src/main/java/adrienmalin/pingpoints/MatchActivity.kt
index 1e55562..fabd36f 100644
--- a/app/src/main/java/adrienmalin/pingpoints/MatchActivity.kt
+++ b/app/src/main/java/adrienmalin/pingpoints/MatchActivity.kt
@@ -30,7 +30,7 @@ class MatchActivity : AppCompatActivity() {
inner class SttAfterTts : UtteranceProgressListener() {
override fun onDone(id: String) {
- SttDialog().show( supportFragmentManager, "SttDialog")
+ SttDialog().show(supportFragmentManager, "SttDialog")
}
override fun onStart(id: String) {}
@@ -57,8 +57,8 @@ class MatchActivity : AppCompatActivity() {
val player1Name = getStringExtra("player1Name")
val player2Name = getStringExtra("player2Name")
players = listOf(
- Player(player1Name, 0, Pattern.compile(getString(R.string.pattern, player1Name))),
- Player(player2Name, 0, Pattern.compile(getString(R.string.pattern, player2Name)))
+ Player(player1Name, 0),
+ Player(player2Name, 0)
)
serviceSide = getIntExtra("starterId", 0)
relaunchSide = when(serviceSide) {
@@ -69,7 +69,10 @@ class MatchActivity : AppCompatActivity() {
sttEnabled = getBooleanExtra("enableSTT", false)
saveState()
- if (ttsEnabled) tts = TextToSpeech(this@MatchActivity, WaitForTtsInit())
+ if (ttsEnabled) {
+ tts = TextToSpeech(this@MatchActivity, WaitForTtsInit())
+ if (sttEnabled) tts?.setOnUtteranceProgressListener(SttAfterTts())
+ }
if (!sttEnabled) showPopUp(getString(R.string.button_hint))
}
}
@@ -127,10 +130,7 @@ class MatchActivity : AppCompatActivity() {
if (matchPoint) scoreSpeech += getString(R.string.match_point)
say(scoreSpeech)
}
- if (sttEnabled) {
- if (ttsEnabled) tts?.setOnUtteranceProgressListener(SttAfterTts())
- else SttDialog().show(supportFragmentManager, "SttDialog")
- }
+ if (sttEnabled and !ttsEnabled) SttDialog().show(supportFragmentManager, "SttDialog")
}
}
}
diff --git a/app/src/main/java/adrienmalin/pingpoints/Player.kt b/app/src/main/java/adrienmalin/pingpoints/Player.kt
index 2544731..f42a641 100644
--- a/app/src/main/java/adrienmalin/pingpoints/Player.kt
+++ b/app/src/main/java/adrienmalin/pingpoints/Player.kt
@@ -1,9 +1,6 @@
package adrienmalin.pingpoints
-import java.util.regex.Pattern
-
data class Player (
var name: String,
- var score: Int,
- var pattern: Pattern? = null
-)
\ No newline at end of file
+ var score: Int
+)
diff --git a/app/src/main/java/adrienmalin/pingpoints/SttDialog.kt b/app/src/main/java/adrienmalin/pingpoints/SttDialog.kt
index e0e0306..73526de 100644
--- a/app/src/main/java/adrienmalin/pingpoints/SttDialog.kt
+++ b/app/src/main/java/adrienmalin/pingpoints/SttDialog.kt
@@ -11,11 +11,10 @@ import android.speech.RecognitionListener
import android.speech.RecognizerIntent
import android.speech.SpeechRecognizer
import android.support.v4.app.DialogFragment
-import android.util.Log
import android.view.LayoutInflater
import android.widget.ImageView
import android.widget.TextView
-import java.util.*
+import java.util.regex.Pattern
import kotlin.math.max
import kotlin.math.min
@@ -26,6 +25,7 @@ class SttDialog : DialogFragment() {
var icStt: ImageView? = null
var stt: SpeechRecognizer? = null
var sttIntent: Intent? = null
+ var pattern: Pattern? = null
inner class SttListener : RecognitionListener {
val ERROR_NOT_UNDERSTOOD = 1
@@ -51,12 +51,18 @@ class SttDialog : DialogFragment() {
matchModel?.apply {
for (result in results) {
partialResultsTextView?.text = result
- for (player in players) {
- if (player.pattern?.matcher(result)?.find() == true) {
- dismiss()
- updateScore(player)
- updateUI()
- return
+ pattern?.apply{
+ val matcher = matcher(result)
+ if (matcher.matches()) {
+ val name_found = matcher.group(1)
+ for (player in players) {
+ if (name_found == player.name) {
+ dismiss()
+ updateScore(player)
+ updateUI()
+ return
+ }
+ }
}
}
}
@@ -99,11 +105,24 @@ class SttDialog : DialogFragment() {
players[1].name
)
sttIntent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH).apply {
- putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM)
+ putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH)
putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 10)
putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, true)
putExtra(RecognizerIntent.EXTRA_PREFER_OFFLINE, true)
+ putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, 30000)
}
+ stt = SpeechRecognizer.createSpeechRecognizer(activity).apply {
+ setRecognitionListener(SttListener())
+ try {
+ stopListening()
+ startListening(sttIntent)
+ } catch (e: ActivityNotFoundException) {
+ sttEnabled = false
+ dismiss()
+ showPopUp(R.string.STT_unavailable)
+ }
+ }
+ pattern = Pattern.compile(getString(R.string.pattern), Pattern.CASE_INSENSITIVE)
}
}
}
diff --git a/app/src/main/java/adrienmalin/pingpoints/Html.kt b/app/src/main/java/adrienmalin/pingpoints/html.kt
similarity index 100%
rename from app/src/main/java/adrienmalin/pingpoints/Html.kt
rename to app/src/main/java/adrienmalin/pingpoints/html.kt
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 4ad8821..738f301 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -32,8 +32,8 @@
Match Ping Points : %s contre %s
"%s contre %s:\n%s a gagné par %d à %d\nPing Points est disponible sur Google Play"
Balle de match
- Dîtes : \"point %s\"\nou \"point %s\"
- (?i:(point|.) %s)
+ Dîtes : \"Point pour %s\"\nou \"Point pour %s\"
+ point pour (.+)
Pouvez-vous répéter ?
Reconnaissance vocale désactivée.
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index ef2a9f3..5d7f370 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -37,8 +37,8 @@
Ping Points Match: %s vs. %s
%s vs. %s:\n%s won by %d to %d\nGet Ping Points on Google Play
Match point
- Say: \"point %s\"\nor \"point %s\"
- (?i:(point|.) %s)
+ Say: \"Point for %s\"\nor \"Point for %s\"
+ point for (.+)
Can you repeat, please?
%d - %d
Voice recognition disabled.