almost good
But why no TTS on game start!?
This commit is contained in:
parent
aab005447d
commit
dcb598cda7
@ -66,6 +66,7 @@ class MatchActivity : AppCompatActivity() {
|
|||||||
getBooleanExtra("enableTTS", false),
|
getBooleanExtra("enableTTS", false),
|
||||||
getBooleanExtra("enableSTT", false)
|
getBooleanExtra("enableSTT", false)
|
||||||
)
|
)
|
||||||
|
for (player in it.players) player.pattern = Pattern.compile(getString(R.string.pattern, player.name))
|
||||||
}
|
}
|
||||||
Snackbar.make(
|
Snackbar.make(
|
||||||
findViewById(R.id.coordinatorLayout),
|
findViewById(R.id.coordinatorLayout),
|
||||||
@ -106,28 +107,6 @@ class MatchActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
fun updateUI() {
|
fun updateUI() {
|
||||||
matchModel?.apply {
|
matchModel?.apply {
|
||||||
textScore?.text = getString(
|
|
||||||
R.string.score,
|
|
||||||
players[serviceSide].score,
|
|
||||||
players[relaunchSide].score
|
|
||||||
)
|
|
||||||
textService?.text = getString(R.string.service, players[serviceSide].name)
|
|
||||||
|
|
||||||
for ((button, player) in buttons.zip(players)) {
|
|
||||||
button.text = fromHtml(getString(R.string.button_text, player.name, player.score))
|
|
||||||
}
|
|
||||||
|
|
||||||
when (serviceSide) {
|
|
||||||
0 -> {
|
|
||||||
imageViews[0]?.setImageResource(R.drawable.ic_service_0)
|
|
||||||
imageViews[1]?.setImageResource(0)
|
|
||||||
}
|
|
||||||
else -> {
|
|
||||||
imageViews[0]?.setImageResource(0)
|
|
||||||
imageViews[1]?.setImageResource(R.drawable.ic_service_1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
undo?.isVisible = when (playId) {
|
undo?.isVisible = when (playId) {
|
||||||
0 -> false
|
0 -> false
|
||||||
else -> true
|
else -> true
|
||||||
@ -137,6 +116,31 @@ class MatchActivity : AppCompatActivity() {
|
|||||||
else -> true
|
else -> true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
textScore?.text = getString(
|
||||||
|
R.string.score,
|
||||||
|
players[serviceSide].score,
|
||||||
|
players[relaunchSide].score
|
||||||
|
)
|
||||||
|
textService?.text = getString(R.string.service, players[serviceSide].name)
|
||||||
|
|
||||||
|
imageViews[0]?.setImageResource(
|
||||||
|
when(serviceSide) {
|
||||||
|
0 -> R.drawable.ic_service_0
|
||||||
|
else -> 0
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
for ((button, player) in buttons.zip(players)) {
|
||||||
|
button.text = fromHtml(getString(R.string.button_text, player.name, player.score))
|
||||||
|
}
|
||||||
|
|
||||||
|
imageViews[1]?.setImageResource(
|
||||||
|
when(serviceSide) {
|
||||||
|
0 -> 0
|
||||||
|
else -> R.drawable.ic_service_1
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
if (ttsEnabled) ttsSpeak()
|
if (ttsEnabled) ttsSpeak()
|
||||||
|
|
||||||
if (matchFinished()) endMatch()
|
if (matchFinished()) endMatch()
|
||||||
@ -183,10 +187,18 @@ class MatchActivity : AppCompatActivity() {
|
|||||||
fun launchStt() {
|
fun launchStt() {
|
||||||
matchModel?.apply {
|
matchModel?.apply {
|
||||||
if (sttEnabled) {
|
if (sttEnabled) {
|
||||||
val intent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH)
|
try {
|
||||||
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM)
|
startActivityForResult(
|
||||||
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault().getDisplayLanguage())
|
Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH).apply {
|
||||||
intent.putExtra(
|
putExtra(
|
||||||
|
RecognizerIntent.EXTRA_LANGUAGE_MODEL,
|
||||||
|
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM
|
||||||
|
)
|
||||||
|
putExtra(
|
||||||
|
RecognizerIntent.EXTRA_LANGUAGE,
|
||||||
|
Locale.getDefault().displayLanguage
|
||||||
|
)
|
||||||
|
putExtra(
|
||||||
RecognizerIntent.EXTRA_PROMPT,
|
RecognizerIntent.EXTRA_PROMPT,
|
||||||
getString(
|
getString(
|
||||||
R.string.STT_hint,
|
R.string.STT_hint,
|
||||||
@ -194,8 +206,9 @@ class MatchActivity : AppCompatActivity() {
|
|||||||
players[1].name
|
players[1].name
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
try {
|
},
|
||||||
startActivityForResult(intent, REQ_CODE_SPEECH_INPUT);
|
REQ_CODE_SPEECH_INPUT
|
||||||
|
)
|
||||||
} catch (e: ActivityNotFoundException) {
|
} catch (e: ActivityNotFoundException) {
|
||||||
sttEnabled = false
|
sttEnabled = false
|
||||||
Snackbar.make(
|
Snackbar.make(
|
||||||
@ -213,18 +226,35 @@ class MatchActivity : AppCompatActivity() {
|
|||||||
when (requestCode) {
|
when (requestCode) {
|
||||||
REQ_CODE_SPEECH_INPUT -> {
|
REQ_CODE_SPEECH_INPUT -> {
|
||||||
matchModel?.let {
|
matchModel?.let {
|
||||||
var understood: Boolean = false
|
|
||||||
if (resultCode == RESULT_OK && data != null) {
|
if (resultCode == RESULT_OK && data != null) {
|
||||||
|
var understood: Boolean = false
|
||||||
val result: String = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS)[0]
|
val result: String = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS)[0]
|
||||||
for (player in it.players) {
|
for (player in it.players) {
|
||||||
if (Pattern.compile(getString(R.string.pattern, player.name)).matcher(result).find()) {
|
if (player.pattern?.matcher(result)?.find() == true) {
|
||||||
it.updateScore(player)
|
|
||||||
understood = true
|
understood = true
|
||||||
|
it.updateScore(player)
|
||||||
|
updateUI()
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!understood) {
|
||||||
|
if (it.ttsEnabled) {
|
||||||
|
tts?.speak(
|
||||||
|
getString(R.string.not_understood),
|
||||||
|
TextToSpeech.QUEUE_FLUSH,
|
||||||
|
hashMapOf(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID to "MessageId")
|
||||||
|
)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Snackbar.make(
|
||||||
|
findViewById(R.id.coordinatorLayout),
|
||||||
|
R.string.not_understood,
|
||||||
|
Snackbar.LENGTH_SHORT
|
||||||
|
).show()
|
||||||
|
launchStt()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (!understood) launchStt()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else -> {
|
else -> {
|
||||||
|
@ -26,7 +26,7 @@ class MatchModel : ViewModel() {
|
|||||||
saveState()
|
saveState()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun updateScore(scorer: player) {
|
fun updateScore(scorer: Player) {
|
||||||
playId++
|
playId++
|
||||||
scorer.score++
|
scorer.score++
|
||||||
if ((players.sumBy { it.score } % 2 == 0) or (players.all { it.score >= 10 })) {
|
if ((players.sumBy { it.score } % 2 == 0) or (players.all { it.score >= 10 })) {
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
package adrienmalin.pingpoints
|
package adrienmalin.pingpoints
|
||||||
|
|
||||||
|
import java.util.regex.Pattern
|
||||||
|
|
||||||
data class Player (
|
data class Player (
|
||||||
var name: String,
|
var name: String,
|
||||||
var score: Int
|
var score: Int,
|
||||||
|
var pattern: Pattern? = null
|
||||||
)
|
)
|
@ -198,7 +198,5 @@ class StarterNameActivity : AppCompatActivity() {
|
|||||||
putExtra("enableSTT", enableSTT)
|
putExtra("enableSTT", enableSTT)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
finish()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -38,5 +38,6 @@ Vous pouvez à tout moment changer la permission dans les paramètres Android."
|
|||||||
<string name="share_message">"%s contre %s:\n%s a gagné par %d à %d\nPing Points est disponible sur Google Play\n "</string>
|
<string name="share_message">"%s contre %s:\n%s a gagné par %d à %d\nPing Points est disponible sur Google Play\n "</string>
|
||||||
<string name="match_point">Balle de match</string>
|
<string name="match_point">Balle de match</string>
|
||||||
<string name="STT_hint">Dîtes : \"Point pour %s\"\nou \"Point pour %s\"</string>
|
<string name="STT_hint">Dîtes : \"Point pour %s\"\nou \"Point pour %s\"</string>
|
||||||
<string name="pattern">Point pour %s</string>
|
<string name="pattern">point pour %s</string>
|
||||||
|
<string name="not_understood">Pouvez-vous répéter ?</string>
|
||||||
</resources>
|
</resources>
|
@ -44,5 +44,6 @@
|
|||||||
<string name="share_message">%s vs. %s:\n%s won by %d to %d\nGet Ping Points on Google Play</string>
|
<string name="share_message">%s vs. %s:\n%s won by %d to %d\nGet Ping Points on Google Play</string>
|
||||||
<string name="match_point">Match point</string>
|
<string name="match_point">Match point</string>
|
||||||
<string name="STT_hint">Say: \"Point for %s\"\nor \"Point for %s\"</string>
|
<string name="STT_hint">Say: \"Point for %s\"\nor \"Point for %s\"</string>
|
||||||
<string name="pattern">Point for %s</string>
|
<string name="pattern">point for %s</string>
|
||||||
|
<string name="not_understood">Can you repeat?</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user