MatchActivity almost finished. Started VictoryActivity
This commit is contained in:
BIN
.idea/caches/build_file_checksums.ser
generated
BIN
.idea/caches/build_file_checksums.ser
generated
Binary file not shown.
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
@ -29,7 +29,7 @@
|
|||||||
</value>
|
</value>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectType">
|
<component name="ProjectType">
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
android:windowSoftInputMode="adjustResize">
|
android:windowSoftInputMode="adjustResize">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN"/>
|
<action android:name="android.intent.action.MAIN"/>
|
||||||
|
|
||||||
<category android:name="android.intent.category.LAUNCHER"/>
|
<category android:name="android.intent.category.LAUNCHER"/>
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
@ -25,6 +26,8 @@
|
|||||||
android:name=".MatchActivity"
|
android:name=".MatchActivity"
|
||||||
android:label="@string/title_activity_match">
|
android:label="@string/title_activity_match">
|
||||||
</activity>
|
</activity>
|
||||||
|
<activity android:name=".VictoryActivity">
|
||||||
|
</activity>
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
@ -7,25 +7,37 @@ import android.view.View
|
|||||||
import android.arch.lifecycle.ViewModelProviders
|
import android.arch.lifecycle.ViewModelProviders
|
||||||
import android.speech.tts.TextToSpeech
|
import android.speech.tts.TextToSpeech
|
||||||
import android.support.design.widget.Snackbar
|
import android.support.design.widget.Snackbar
|
||||||
|
import android.text.method.LinkMovementMethod
|
||||||
|
import android.view.Menu
|
||||||
|
import android.view.MenuItem
|
||||||
import android.widget.*
|
import android.widget.*
|
||||||
|
|
||||||
const val REQ_CODE_SPEECH_INPUT = 1
|
const val REQ_CODE_SPEECH_INPUT = 1
|
||||||
|
|
||||||
|
|
||||||
class MatchActivity : AppCompatActivity() {
|
class MatchActivity : AppCompatActivity() {
|
||||||
|
var matchModel: MatchModel? = null
|
||||||
var textScore: android.widget.TextView? = null
|
var textScore: android.widget.TextView? = null
|
||||||
var textService: android.widget.TextView? = null
|
var textService: android.widget.TextView? = null
|
||||||
var buttons: Array<Button> = emptyArray()
|
var buttons: Array<Button> = emptyArray()
|
||||||
var imageViews: Array<ImageView?> = emptyArray()
|
var imageViews: Array<ImageView?> = emptyArray()
|
||||||
var matchModel: MatchModel? = null
|
|
||||||
var tts: TextToSpeech? = null
|
var tts: TextToSpeech? = null
|
||||||
|
var undo: MenuItem? = null
|
||||||
|
var redo: MenuItem? = null
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
|
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
|
||||||
setContentView(R.layout.activity_match)
|
setContentView(R.layout.activity_match)
|
||||||
setSupportActionBar(findViewById(R.id.toolbar))
|
setSupportActionBar(findViewById(R.id.toolbar))
|
||||||
|
|
||||||
|
// Set HTML text for icons credits
|
||||||
|
findViewById<TextView>(R.id.iconsCredit).run {
|
||||||
|
setText(fromHtml(getString(R.string.iconCredits)))
|
||||||
|
movementMethod = LinkMovementMethod.getInstance()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Find views
|
||||||
textScore = findViewById(R.id.textScore)
|
textScore = findViewById(R.id.textScore)
|
||||||
textService = findViewById(R.id.textService)
|
textService = findViewById(R.id.textService)
|
||||||
buttons = arrayOf(
|
buttons = arrayOf(
|
||||||
@ -36,16 +48,19 @@ class MatchActivity : AppCompatActivity() {
|
|||||||
findViewById(R.id.imgService0),
|
findViewById(R.id.imgService0),
|
||||||
findViewById(R.id.imgService1)
|
findViewById(R.id.imgService1)
|
||||||
)
|
)
|
||||||
val matchModel = ViewModelProviders.of(this).get(MatchModel::class.java)
|
|
||||||
if (!matchModel.matchStarted) {
|
// Init or restore ViewModel
|
||||||
matchModel.startMatch(
|
matchModel = ViewModelProviders.of(this).get(MatchModel::class.java)
|
||||||
|
matchModel?.let {
|
||||||
|
if (!it.matchStarted) {
|
||||||
|
it.startMatch(
|
||||||
intent.getStringExtra("player1Name"),
|
intent.getStringExtra("player1Name"),
|
||||||
intent.getStringExtra("player2Name"),
|
intent.getStringExtra("player2Name"),
|
||||||
intent.getIntExtra("starterId", 0),
|
intent.getIntExtra("starterId", 0),
|
||||||
intent.getBooleanExtra("enableTTS", false),
|
intent.getBooleanExtra("enableTTS", false),
|
||||||
intent.getBooleanExtra("enableSTT", false)
|
intent.getBooleanExtra("enableSTT", false)
|
||||||
)
|
)
|
||||||
if (matchModel.ttsEnabled) {
|
if (it.ttsEnabled) {
|
||||||
tts = TextToSpeech(
|
tts = TextToSpeech(
|
||||||
this,
|
this,
|
||||||
TextToSpeech.OnInitListener {
|
TextToSpeech.OnInitListener {
|
||||||
@ -59,11 +74,38 @@ class MatchActivity : AppCompatActivity() {
|
|||||||
Snackbar.LENGTH_SHORT
|
Snackbar.LENGTH_SHORT
|
||||||
).show()
|
).show()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
updateUI()
|
updateUI()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||||
|
menuInflater.inflate(R.menu.match_menu, menu)
|
||||||
|
undo = menu.findItem(R.id.action_undo)
|
||||||
|
redo = menu.findItem(R.id.action_redo)
|
||||||
|
return super.onCreateOptionsMenu(menu)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) {
|
||||||
|
R.id.action_undo -> {
|
||||||
|
matchModel?.undo()
|
||||||
|
updateUI()
|
||||||
|
true
|
||||||
|
}
|
||||||
|
R.id.action_redo -> {
|
||||||
|
matchModel?.redo()
|
||||||
|
updateUI()
|
||||||
|
true
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
super.onOptionsItemSelected(item)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun updateUI() {
|
fun updateUI() {
|
||||||
matchModel?.apply {
|
matchModel?.apply {
|
||||||
|
if (matchFinished) {
|
||||||
|
|
||||||
|
} else {
|
||||||
textScore?.text = getString(
|
textScore?.text = getString(
|
||||||
R.string.score,
|
R.string.score,
|
||||||
players[serviceSide].score,
|
players[serviceSide].score,
|
||||||
@ -86,6 +128,15 @@ class MatchActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
undo?.isVisible = when (playId) {
|
||||||
|
0 -> false
|
||||||
|
else -> true
|
||||||
|
}
|
||||||
|
redo?.isVisible = when (playId) {
|
||||||
|
history.size - 1 -> false
|
||||||
|
else -> true
|
||||||
|
}
|
||||||
|
|
||||||
if (ttsEnabled) {
|
if (ttsEnabled) {
|
||||||
tts?.speak(
|
tts?.speak(
|
||||||
getString(
|
getString(
|
||||||
@ -100,11 +151,19 @@ class MatchActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun updateScore(view: View) {
|
fun updateScore(view: View) {
|
||||||
|
matchModel?.apply {
|
||||||
|
if (!matchFinished) {
|
||||||
|
for (side in 0..1) {
|
||||||
|
if (view == buttons[side]) {
|
||||||
|
updateScore(side)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
updateUI()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -7,21 +7,69 @@ import android.arch.lifecycle.ViewModel
|
|||||||
|
|
||||||
class MatchModel : ViewModel() {
|
class MatchModel : ViewModel() {
|
||||||
var matchStarted: Boolean = false
|
var matchStarted: Boolean = false
|
||||||
|
var matchFinished: Boolean = false
|
||||||
var players: List<Player> = emptyList()
|
var players: List<Player> = emptyList()
|
||||||
var serviceSide: Int = 0
|
var serviceSide: Int = 0
|
||||||
var relaunchSide: Int = 1
|
var relaunchSide: Int = 1
|
||||||
var ttsEnabled: Boolean = false
|
var ttsEnabled: Boolean = false
|
||||||
var sttEnabled: Boolean = false
|
var sttEnabled: Boolean = false
|
||||||
|
var playId: Int = 0
|
||||||
|
var history: MutableList<Play> = ArrayList()
|
||||||
|
|
||||||
fun startMatch(player1Name: String, player2Name:String, starterId: Int, enableTTS: Boolean, enableSTT: Boolean) {
|
fun startMatch(player1Name: String, player2Name:String, starterId: Int, enableTTS: Boolean, enableSTT: Boolean) {
|
||||||
matchStarted = true
|
matchStarted = true
|
||||||
players = listOf(Player(player1Name), Player(player2Name))
|
players = listOf(Player(player1Name), Player(player2Name))
|
||||||
serviceSide = starterId
|
serviceSide = starterId
|
||||||
relaunchSide = when(starterId) {
|
relaunchSide = when(serviceSide) {
|
||||||
0 -> 1
|
0 -> 1
|
||||||
else -> 0
|
else -> 0
|
||||||
}
|
}
|
||||||
ttsEnabled = enableTTS
|
ttsEnabled = enableTTS
|
||||||
sttEnabled = enableSTT
|
sttEnabled = enableSTT
|
||||||
|
saveState()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun updateScore(scorerId: Int) {
|
||||||
|
playId++
|
||||||
|
players[scorerId].score++
|
||||||
|
if ((players.sumBy { it.score } % 2 == 0) or (players.all { it.score >= 10 })) {
|
||||||
|
serviceSide = relaunchSide.also { relaunchSide = serviceSide }
|
||||||
|
}
|
||||||
|
saveState()
|
||||||
|
|
||||||
|
// Is match finished?
|
||||||
|
val (minScore, maxScore) = players.map { it.score }.sorted()
|
||||||
|
if ((maxScore >= 11) and (maxScore - minScore >= 2)) matchFinished = true
|
||||||
|
}
|
||||||
|
|
||||||
|
fun saveState() {
|
||||||
|
val play = Play(players.map { it.score }, serviceSide)
|
||||||
|
if (playId == history.size) {
|
||||||
|
history.add(play)
|
||||||
|
} else {
|
||||||
|
history[playId] = play
|
||||||
|
history = history.subList(0, playId+1).toMutableList()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun undo() {
|
||||||
|
playId--
|
||||||
|
reloadState()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun redo() {
|
||||||
|
playId++
|
||||||
|
reloadState()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun reloadState() {
|
||||||
|
history[playId].let{
|
||||||
|
players.zip(it.score).forEach{(player, score) -> player.score = score}
|
||||||
|
serviceSide = it.serviceSide
|
||||||
|
relaunchSide = when(serviceSide) {
|
||||||
|
0 -> 1
|
||||||
|
else -> 0
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,5 +2,5 @@ package adrienmalin.pingpoints
|
|||||||
|
|
||||||
data class Play (
|
data class Play (
|
||||||
val score: List<Int>,
|
val score: List<Int>,
|
||||||
val server: Int
|
val serviceSide: Int
|
||||||
)
|
)
|
@ -1,6 +1,6 @@
|
|||||||
package adrienmalin.pingpoints
|
package adrienmalin.pingpoints
|
||||||
|
|
||||||
data class Player (
|
data class Player (
|
||||||
var name: String = "",
|
var name: String,
|
||||||
var score: Int = 0
|
var score: Int = 0
|
||||||
)
|
)
|
@ -37,11 +37,7 @@ class StarterNameActivity : AppCompatActivity() {
|
|||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setContentView(R.layout.activity_starter_name)
|
setContentView(R.layout.activity_starter_name)
|
||||||
setSupportActionBar(findViewById(R.id.toolbar))
|
setSupportActionBar(findViewById(R.id.toolbar))
|
||||||
// Set HTML text for icons credits
|
|
||||||
findViewById<TextView>(R.id.iconsCredit).run {
|
|
||||||
setText(fromHtml(getString(R.string.iconCredits)))
|
|
||||||
movementMethod = LinkMovementMethod.getInstance()
|
|
||||||
}
|
|
||||||
// Find views
|
// Find views
|
||||||
player1NameInput = findViewById(R.id.player1Name)
|
player1NameInput = findViewById(R.id.player1Name)
|
||||||
player2NameInput = findViewById(R.id.player2Name)
|
player2NameInput = findViewById(R.id.player2Name)
|
||||||
|
12
app/src/main/java/adrienmalin/pingpoints/VictoryActivity.kt
Normal file
12
app/src/main/java/adrienmalin/pingpoints/VictoryActivity.kt
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
package adrienmalin.pingpoints
|
||||||
|
|
||||||
|
import android.support.v7.app.AppCompatActivity
|
||||||
|
import android.os.Bundle
|
||||||
|
|
||||||
|
class VictoryActivity : AppCompatActivity() {
|
||||||
|
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
setContentView(R.layout.activity_victory)
|
||||||
|
}
|
||||||
|
}
|
@ -1,21 +1,12 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
<android.support.design.widget.CoordinatorLayout
|
<android.support.design.widget.CoordinatorLayout
|
||||||
android:id="@+id/coordinatorLayout"
|
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/coordinatorLayout"
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<android.support.constraint.ConstraintLayout
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
tools:context=".MatchActivity"
|
|
||||||
tools:layout_editor_absoluteY="73dp">
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
@ -29,7 +20,7 @@
|
|||||||
android:background="@color/colorPrimary"
|
android:background="@color/colorPrimary"
|
||||||
android:elevation="4dp"
|
android:elevation="4dp"
|
||||||
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
|
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
|
||||||
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
|
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" android:layout_weight="0"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/linearLayoutText"
|
android:id="@+id/linearLayoutText"
|
||||||
@ -42,11 +33,11 @@
|
|||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
tools:layout_editor_absoluteY="8dp">
|
tools:layout_editor_absoluteY="8dp" android:layout_weight="0">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/textScore"
|
android:id="@+id/textScore"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginLeft="8dp"
|
android:layout_marginLeft="8dp"
|
||||||
android:layout_marginStart="8dp"
|
android:layout_marginStart="8dp"
|
||||||
@ -55,10 +46,10 @@
|
|||||||
android:textAppearance="@style/TextAppearance.AppCompat.Large"
|
android:textAppearance="@style/TextAppearance.AppCompat.Large"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:text="@string/score" android:layout_marginRight="8dp"/>
|
android:layout_marginRight="8dp" android:text="@string/score"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/textService"
|
android:id="@+id/textService"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginEnd="8dp"
|
android:layout_marginEnd="8dp"
|
||||||
android:layout_marginStart="8dp"
|
android:layout_marginStart="8dp"
|
||||||
@ -69,15 +60,15 @@
|
|||||||
app:layout_constraintHorizontal_bias="1.0"
|
app:layout_constraintHorizontal_bias="1.0"
|
||||||
app:layout_constraintStart_toEndOf="@+id/textScore"
|
app:layout_constraintStart_toEndOf="@+id/textScore"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:text="@string/service" android:layout_marginRight="8dp"
|
android:layout_marginRight="8dp"
|
||||||
android:layout_marginLeft="8dp"/>
|
android:layout_marginLeft="8dp" android:text="@string/service"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal" android:layout_weight="1">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/imgService0"
|
android:id="@+id/imgService0"
|
||||||
@ -90,7 +81,6 @@
|
|||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/buttonPlayer0"
|
android:id="@+id/buttonPlayer0"
|
||||||
style="@style/Widget.AppCompat.Button.Colored"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_marginBottom="8dp"
|
android:layout_marginBottom="8dp"
|
||||||
@ -112,7 +102,6 @@
|
|||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/buttonPlayer1"
|
android:id="@+id/buttonPlayer1"
|
||||||
style="@style/Widget.AppCompat.Button.Colored"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_marginBottom="8dp"
|
android:layout_marginBottom="8dp"
|
||||||
@ -144,9 +133,33 @@
|
|||||||
tools:layout_editor_absoluteY="120dp"/>
|
tools:layout_editor_absoluteY="120dp"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
<LinearLayout
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content" android:layout_weight="0">
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/pingPointsCredit"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/PingPointsCredits"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/enableSttSwitch"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_weight="1" android:layout_margin="8dp" android:gravity="left"/>
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/iconsCredit"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/iconCredits"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/PingPointsCredit"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
android:layout_marginStart="8dp" app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_weight="1" android:layout_margin="8dp" android:gravity="right"/>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
</android.support.constraint.ConstraintLayout>
|
|
||||||
|
|
||||||
</android.support.design.widget.CoordinatorLayout>
|
</android.support.design.widget.CoordinatorLayout>
|
@ -89,23 +89,6 @@
|
|||||||
android:layout_marginEnd="8dp" android:layout_marginRight="8dp"
|
android:layout_marginEnd="8dp" android:layout_marginRight="8dp"
|
||||||
app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="8dp"
|
app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="8dp"
|
||||||
android:layout_marginStart="8dp"/>
|
android:layout_marginStart="8dp"/>
|
||||||
<TextView
|
|
||||||
android:id="@+id/pingPointsCredit"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/PingPointsCredits"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/enableSttSwitch" app:layout_constraintStart_toStartOf="parent"
|
|
||||||
android:layout_marginLeft="8dp" android:layout_marginStart="8dp" app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
android:layout_marginEnd="8dp" android:layout_marginRight="8dp" android:layout_marginTop="24dp"/>
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/iconsCredit"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/iconCredits"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/pingPointsCredit"
|
|
||||||
app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="8dp"
|
|
||||||
android:layout_marginStart="8dp" app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="8dp"
|
|
||||||
android:layout_marginRight="8dp"/>
|
|
||||||
<Button
|
<Button
|
||||||
android:text="@string/start"
|
android:text="@string/start"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@ -1,21 +1,12 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
<android.support.design.widget.CoordinatorLayout
|
<android.support.design.widget.CoordinatorLayout
|
||||||
android:id="@+id/coordinatorLayout"
|
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/coordinatorLayout"
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<android.support.constraint.ConstraintLayout
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
tools:context=".MatchActivity"
|
|
||||||
tools:layout_editor_absoluteY="73dp">
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
@ -29,7 +20,7 @@
|
|||||||
android:background="@color/colorPrimary"
|
android:background="@color/colorPrimary"
|
||||||
android:elevation="4dp"
|
android:elevation="4dp"
|
||||||
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
|
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
|
||||||
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
|
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" android:layout_weight="0"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/linearLayoutText"
|
android:id="@+id/linearLayoutText"
|
||||||
@ -42,58 +33,55 @@
|
|||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
tools:layout_editor_absoluteY="8dp">
|
tools:layout_editor_absoluteY="8dp" android:layout_weight="0">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/textScore"
|
android:id="@+id/textScore"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginLeft="8dp"
|
android:layout_marginLeft="8dp"
|
||||||
android:layout_marginStart="8dp"
|
android:layout_marginStart="8dp"
|
||||||
android:layout_weight="1"
|
|
||||||
android:gravity="left"
|
android:gravity="left"
|
||||||
android:textAppearance="@style/TextAppearance.AppCompat.Large"
|
android:textAppearance="@style/TextAppearance.AppCompat.Large"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:text="@string/score" android:layout_marginRight="8dp"/>
|
android:layout_marginRight="8dp" android:text="@string/score"
|
||||||
|
android:layout_weight="1"/>
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/textService"
|
android:id="@+id/textService"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginEnd="8dp"
|
android:layout_marginEnd="8dp"
|
||||||
android:layout_marginStart="8dp"
|
android:layout_marginStart="8dp"
|
||||||
android:layout_weight="1"
|
|
||||||
android:textAppearance="@style/TextAppearance.AppCompat.Large"
|
android:textAppearance="@style/TextAppearance.AppCompat.Large"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintHorizontal_bias="1.0"
|
app:layout_constraintHorizontal_bias="1.0"
|
||||||
app:layout_constraintStart_toEndOf="@+id/textScore"
|
app:layout_constraintStart_toEndOf="@+id/textScore"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:text="@string/service" android:gravity="right"/>
|
android:gravity="right" android:text="@string/service"
|
||||||
|
android:layout_weight="1"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical" android:layout_weight="1">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/imgService0"
|
android:id="@+id/imgService0"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="48dp"
|
android:layout_height="48dp"
|
||||||
android:layout_margin="8dp"
|
android:layout_margin="8dp"
|
||||||
android:layout_weight="0"
|
|
||||||
android:contentDescription="@string/service_img_description"
|
android:contentDescription="@string/service_img_description"
|
||||||
app:srcCompat="@drawable/ic_service_1"
|
app:srcCompat="@drawable/ic_service_1"
|
||||||
tools:layout_editor_absoluteY="120dp"/>
|
tools:layout_editor_absoluteY="120dp"/>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/buttonPlayer0"
|
android:id="@+id/buttonPlayer0"
|
||||||
style="@style/Widget.AppCompat.Button.Colored"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_marginStart="8dp"
|
android:layout_marginStart="8dp"
|
||||||
android:layout_weight="1"
|
|
||||||
android:background="@color/colorAccent"
|
android:background="@color/colorAccent"
|
||||||
android:bufferType="spannable"
|
android:bufferType="spannable"
|
||||||
android:onClick="updateScore"
|
android:onClick="updateScore"
|
||||||
@ -104,16 +92,14 @@
|
|||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintStart_toEndOf="@+id/imgService0"
|
app:layout_constraintStart_toEndOf="@+id/imgService0"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:text="@string/button_text" android:layout_margin="8dp"/>
|
tools:text="@string/button_text" android:layout_margin="8dp" android:layout_weight="1"/>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/buttonPlayer1"
|
android:id="@+id/buttonPlayer1"
|
||||||
style="@style/Widget.AppCompat.Button.Colored"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_marginEnd="8dp"
|
android:layout_marginEnd="8dp"
|
||||||
android:layout_marginStart="8dp"
|
android:layout_marginStart="8dp"
|
||||||
android:layout_weight="1"
|
|
||||||
android:background="@color/colorAccent"
|
android:background="@color/colorAccent"
|
||||||
android:bufferType="spannable"
|
android:bufferType="spannable"
|
||||||
android:onClick="updateScore"
|
android:onClick="updateScore"
|
||||||
@ -124,21 +110,39 @@
|
|||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/imgService1"
|
app:layout_constraintEnd_toStartOf="@+id/imgService1"
|
||||||
app:layout_constraintStart_toEndOf="@+id/buttonPlayer0"
|
app:layout_constraintStart_toEndOf="@+id/buttonPlayer0"
|
||||||
tools:text="@string/button_text" android:layout_margin="8dp"/>
|
tools:text="@string/button_text" android:layout_margin="8dp" android:layout_weight="1"/>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/imgService1"
|
android:id="@+id/imgService1"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="48dp"
|
android:layout_height="48dp"
|
||||||
android:layout_margin="8dp"
|
android:layout_margin="8dp"
|
||||||
android:layout_weight="0"
|
|
||||||
android:contentDescription="@string/service_img_description"
|
android:contentDescription="@string/service_img_description"
|
||||||
tools:layout_editor_absoluteY="120dp"/>
|
tools:layout_editor_absoluteY="120dp"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/pingPointsCredit"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/PingPointsCredits"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/enableSttSwitch"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
android:layout_marginLeft="8dp" android:layout_marginStart="8dp"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
android:layout_marginEnd="8dp" android:layout_marginRight="8dp" android:layout_marginTop="24dp"
|
||||||
|
android:layout_weight="0"/>
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/iconsCredit"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/iconCredits"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/PingPointsCredit"
|
||||||
|
app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="8dp"
|
||||||
|
android:layout_marginStart="8dp" app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginRight="8dp" android:layout_weight="0"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
</android.support.constraint.ConstraintLayout>
|
|
||||||
|
|
||||||
</android.support.design.widget.CoordinatorLayout>
|
</android.support.design.widget.CoordinatorLayout>
|
@ -106,23 +106,6 @@
|
|||||||
app:layout_constraintTop_toBottomOf="@+id/enableTtsSwitch" android:layout_marginStart="8dp"
|
app:layout_constraintTop_toBottomOf="@+id/enableTtsSwitch" android:layout_marginStart="8dp"
|
||||||
app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="8dp" android:layout_marginEnd="8dp"
|
app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="8dp" android:layout_marginEnd="8dp"
|
||||||
app:layout_constraintEnd_toEndOf="parent" android:layout_marginRight="8dp"/>
|
app:layout_constraintEnd_toEndOf="parent" android:layout_marginRight="8dp"/>
|
||||||
<TextView
|
|
||||||
android:id="@+id/PingPointsCredit"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/PingPointsCredits"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/enableSttSwitch" app:layout_constraintStart_toStartOf="parent"
|
|
||||||
android:layout_marginLeft="8dp" android:layout_marginStart="8dp" app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
android:layout_marginEnd="8dp" android:layout_marginRight="8dp" android:layout_marginTop="24dp"/>
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/iconsCredit"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/iconCredits"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/PingPointsCredit"
|
|
||||||
app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="8dp"
|
|
||||||
android:layout_marginStart="8dp" app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="8dp"
|
|
||||||
android:layout_marginRight="8dp"/>
|
|
||||||
<Button
|
<Button
|
||||||
android:text="@string/start"
|
android:text="@string/start"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
35
app/src/main/res/layout/activity_victory.xml
Normal file
35
app/src/main/res/layout/activity_victory.xml
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<android.support.design.widget.CoordinatorLayout
|
||||||
|
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/coordinatorLayout"
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
<android.support.constraint.ConstraintLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
tools:context=".VictoryActivity">
|
||||||
|
|
||||||
|
<android.support.v7.widget.Toolbar
|
||||||
|
android:id="@+id/toolbar"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="?attr/actionBarSize"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:background="@color/colorPrimary"
|
||||||
|
android:elevation="4dp"
|
||||||
|
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
|
||||||
|
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" android:layout_weight="0"/>
|
||||||
|
<TextView
|
||||||
|
android:text="TextView"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content" tools:layout_editor_absoluteY="106dp"
|
||||||
|
tools:layout_editor_absoluteX="57dp" android:id="@+id/textView"/>
|
||||||
|
|
||||||
|
</android.support.constraint.ConstraintLayout>
|
||||||
|
|
||||||
|
</android.support.design.widget.CoordinatorLayout>
|
20
app/src/main/res/menu/match_menu.xml
Normal file
20
app/src/main/res/menu/match_menu.xml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_undo"
|
||||||
|
android:icon="@drawable/ic_undo"
|
||||||
|
android:title="@string/undo"
|
||||||
|
app:showAsAction="ifRoom"
|
||||||
|
android:visible="false" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_redo"
|
||||||
|
android:icon="@drawable/ic_redo"
|
||||||
|
android:title="@string/redo"
|
||||||
|
app:showAsAction="ifRoom"
|
||||||
|
android:visible="false" />
|
||||||
|
|
||||||
|
</menu>
|
@ -9,7 +9,7 @@
|
|||||||
<string name="start">Allons-y !</string>
|
<string name="start">Allons-y !</string>
|
||||||
<string name="swap_names">Échanger les noms</string>
|
<string name="swap_names">Échanger les noms</string>
|
||||||
<string name="PingPointsCredits">Ping Points par Adrien Malin</string>
|
<string name="PingPointsCredits">Ping Points par Adrien Malin</string>
|
||||||
<string name="iconCredits"><html>Icônes par <a href="http://www.freepik.com" title="Freepik">Freepik</a> chez <a href="https://www.flaticon.com/" title="Flaticon">flaticon.com</a> Licence <a href="http://creativecommons.org/licenses/by/3.0/" title="Creative Commons BY 3.0" target="_blank">CC 3.0 BY</a></html></string>
|
<string name="iconCredits">Icônes par <a href="http://www.freepik.com" title="Freepik">Freepik</a> chez <a href="https://www.flaticon.com/" title="Flaticon">flaticon.com</a> Licence <a href="http://creativecommons.org/licenses/by/3.0/" title="Creative Commons BY 3.0" target="_blank">CC 3.0 BY</a></string>
|
||||||
<string name="TTS_unavailable">Désolé, votre appareil ne permet pas la synthèse vocale.</string>
|
<string name="TTS_unavailable">Désolé, votre appareil ne permet pas la synthèse vocale.</string>
|
||||||
<string name="STT_unavailable">Désolé, votre appareil ne permet pas la reconnaissance vocale.</string>
|
<string name="STT_unavailable">Désolé, votre appareil ne permet pas la reconnaissance vocale.</string>
|
||||||
<string name="explain_record_audio_request">"Cette appli utilise l'API de Google pour la reconnaissance vocale : votre voix sera enregistrée et envoyée aux serveurs de Google pour analyse.
|
<string name="explain_record_audio_request">"Cette appli utilise l'API de Google pour la reconnaissance vocale : votre voix sera enregistrée et envoyée aux serveurs de Google pour analyse.
|
||||||
@ -27,4 +27,6 @@ Vous pouvez à tout moment changer la permission dans les paramètres Android."
|
|||||||
<string name="title_activity_match">Ping Points</string>
|
<string name="title_activity_match">Ping Points</string>
|
||||||
<string name="update_score_speech">%d - %d. Service : %s</string>
|
<string name="update_score_speech">%d - %d. Service : %s</string>
|
||||||
<string name="button_hint">Cliquez sur le joueur qui a marqué</string>
|
<string name="button_hint">Cliquez sur le joueur qui a marqué</string>
|
||||||
|
<string name="redo">Rétablir</string>
|
||||||
|
<string name="undo">Annuler</string>
|
||||||
</resources>
|
</resources>
|
@ -8,10 +8,10 @@
|
|||||||
<string name="start">Let\'s go!</string>
|
<string name="start">Let\'s go!</string>
|
||||||
<string name="swap_names">Swap names</string>
|
<string name="swap_names">Swap names</string>
|
||||||
<string name="PingPointsCredits">Ping Points by Adrien Malin</string>
|
<string name="PingPointsCredits">Ping Points by Adrien Malin</string>
|
||||||
<string name="iconCredits">"<html>Icons made by <a href="http://www.freepik.com" title="Freepik">Freepik</a>
|
<string name="iconCredits">Icons made by <a href="http://www.freepik.com" title="Freepik">Freepik</a>
|
||||||
from <a href="https://www.flaticon.com/" title="Flaticon">flaticon.com</a> is
|
from <a href="https://www.flaticon.com/" title="Flaticon">flaticon.com</a> is
|
||||||
licensed by <a href="http://creativecommons.org/licenses/by/3.0/" title="Creative Commons BY
|
licensed by <a href="http://creativecommons.org/licenses/by/3.0/" title="Creative Commons BY
|
||||||
3.0" target="_blank">CC 3.0 BY</a></html>"
|
3.0" target="_blank">CC 3.0 BY</a>
|
||||||
</string>
|
</string>
|
||||||
<string name="TTS_unavailable">Sorry, your device doesn\'t support text to speech.</string>
|
<string name="TTS_unavailable">Sorry, your device doesn\'t support text to speech.</string>
|
||||||
<string name="STT_unavailable">Sorry, your device doesn\'t support voice recognition.</string>
|
<string name="STT_unavailable">Sorry, your device doesn\'t support voice recognition.</string>
|
||||||
@ -27,8 +27,11 @@
|
|||||||
<string name="service">Service: %s</string>
|
<string name="service">Service: %s</string>
|
||||||
<string name="score">Score: %d - %d</string>
|
<string name="score">Score: %d - %d</string>
|
||||||
<string name="service_img_description">Service</string>
|
<string name="service_img_description">Service</string>
|
||||||
<string name="button_text" translatable="false">%s <br /> <br /> <big> <big> %d </big> </big>
|
<string name="button_text" translatable="false">%s <br /> <br /> <big> <big> %d </big>
|
||||||
|
</big>
|
||||||
</string>
|
</string>
|
||||||
<string name="update_score_speech">%d - %d. Service: %s</string>
|
<string name="update_score_speech">%d - %d. Service: %s</string>
|
||||||
<string name="button_hint">Click on the scoring player</string>
|
<string name="button_hint">Click on the scoring player</string>
|
||||||
|
<string name="undo">Undo</string>
|
||||||
|
<string name="redo">Redo</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
Reference in New Issue
Block a user