start MatchActivity
This commit is contained in:
24
app/src/main/java/adrienmalin/pingpoints/MatchActivity.kt
Normal file
24
app/src/main/java/adrienmalin/pingpoints/MatchActivity.kt
Normal file
@ -0,0 +1,24 @@
|
||||
package adrienmalin.pingpoints
|
||||
|
||||
import android.os.Bundle
|
||||
import android.support.v7.app.AppCompatActivity
|
||||
import android.support.v7.app.AppCompatDelegate
|
||||
import android.view.View
|
||||
import android.arch.lifecycle.ViewModelProviders
|
||||
|
||||
|
||||
class MatchActivity : AppCompatActivity() {
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
|
||||
setContentView(R.layout.activity_match)
|
||||
setSupportActionBar(findViewById(R.id.toolbar))
|
||||
val matchModel = ViewModelProviders.of(this).get(MatchModel::class.java)
|
||||
}
|
||||
|
||||
fun updateScore(view: View) {
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -3,8 +3,15 @@ package adrienmalin.pingpoints
|
||||
import android.arch.lifecycle.ViewModel
|
||||
|
||||
class MatchModel : ViewModel() {
|
||||
var players: List<Player> = listOf(Player(), Player())
|
||||
var server: Int = 0
|
||||
var ttsEnabled: Boolean = false
|
||||
var sttEnabled: Boolean = false
|
||||
lateinit var players: List<Player>
|
||||
lateinit var server: Int
|
||||
lateinit var ttsEnabled: Boolean
|
||||
lateinit var sttEnabled: Boolean
|
||||
|
||||
fun startMatch(player1Name: String, player2Name:String, starterId: Int, enableTTS: Boolean, enableSTT: Boolean) {
|
||||
players = listOf(Player(player1Name), Player(player2Name))
|
||||
server = starterId
|
||||
ttsEnabled = enableTTS
|
||||
sttEnabled = enableSTT
|
||||
}
|
||||
}
|
@ -1,19 +1,26 @@
|
||||
package adrienmalin.pingpoints
|
||||
|
||||
import android.Manifest
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.SharedPreferences
|
||||
import android.support.v7.app.AppCompatActivity
|
||||
import android.content.pm.PackageManager
|
||||
import android.os.Bundle
|
||||
import android.speech.SpeechRecognizer
|
||||
import android.speech.tts.TextToSpeech
|
||||
import android.support.design.widget.Snackbar
|
||||
import android.support.v4.app.ActivityCompat
|
||||
import android.support.v4.content.ContextCompat
|
||||
import android.support.v7.app.AlertDialog
|
||||
import android.support.v7.app.AppCompatActivity
|
||||
import android.text.method.LinkMovementMethod
|
||||
import android.view.View
|
||||
import android.widget.*
|
||||
import android.speech.tts.TextToSpeech
|
||||
import android.content.Intent
|
||||
import android.speech.SpeechRecognizer
|
||||
|
||||
|
||||
val CHECK_TTS = 1
|
||||
const val CHECK_TTS = 1
|
||||
const val ASK_PERMISSIONS_RECORD_AUDIO = 2
|
||||
|
||||
|
||||
class StarterNameActivity : AppCompatActivity() {
|
||||
@ -29,23 +36,21 @@ class StarterNameActivity : AppCompatActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_starter_name)
|
||||
|
||||
setSupportActionBar(findViewById(R.id.toolbar))
|
||||
// Set HTML text for icons credits
|
||||
findViewById<TextView>(R.id.iconsCredit).run {
|
||||
setHtmlText(getString(R.string.iconCredits))
|
||||
movementMethod = LinkMovementMethod.getInstance()
|
||||
}
|
||||
|
||||
// Find views
|
||||
player1NameInput = findViewById(R.id.player1Name)
|
||||
player2NameInput = findViewById(R.id.player2Name)
|
||||
starterRadioGroup = findViewById(R.id.starterRadioGroup)
|
||||
enableTtsSwitch = findViewById(R.id.enableTtsSwitch)
|
||||
enableSttSwitch = findViewById(R.id.enableSttSwitch)
|
||||
|
||||
// Check if function is available on switch checked or swapped
|
||||
enableTtsSwitch?.setOnCheckedChangeListener { view, isChecked -> checkTTS() }
|
||||
enableTtsSwitch?.setOnTouchListener { view, event -> checkTTS(); false}
|
||||
|
||||
enableSttSwitch?.setOnCheckedChangeListener { view, isChecked -> checkSTT() }
|
||||
enableSttSwitch?.setOnTouchListener { view, event -> checkSTT(); false}
|
||||
|
||||
@ -94,15 +99,18 @@ class StarterNameActivity : AppCompatActivity() {
|
||||
when (requestCode) {
|
||||
CHECK_TTS -> {
|
||||
if (resultCode != TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
|
||||
Toast.makeText(applicationContext, R.string.TTS_unavailable, Toast.LENGTH_LONG).show()
|
||||
Snackbar.make(
|
||||
findViewById(R.id.coordinatorLayout),
|
||||
R.string.TTS_unavailable,
|
||||
Snackbar.LENGTH_SHORT
|
||||
).show()
|
||||
enableTtsSwitch?.isChecked = false
|
||||
Intent().run {
|
||||
action = TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA
|
||||
startActivity(this)
|
||||
}
|
||||
}
|
||||
}
|
||||
else -> {
|
||||
} else -> {
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -111,28 +119,93 @@ class StarterNameActivity : AppCompatActivity() {
|
||||
enableSttSwitch?.let {
|
||||
if (it.isChecked) {
|
||||
if (!SpeechRecognizer.isRecognitionAvailable(this)) {
|
||||
Toast.makeText(applicationContext, R.string.STT_unavailable, Toast.LENGTH_LONG).show()
|
||||
it.isChecked = false
|
||||
Snackbar.make(
|
||||
findViewById(R.id.coordinatorLayout),
|
||||
R.string.STT_unavailable,
|
||||
Snackbar.LENGTH_SHORT
|
||||
).show()
|
||||
enableSttSwitch?.isChecked = false
|
||||
} else {
|
||||
// Ask for record audio permission
|
||||
if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
|
||||
// Permission is not granted
|
||||
// Should we show an explanation?
|
||||
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.RECORD_AUDIO)) {
|
||||
AlertDialog.Builder(this)
|
||||
.setTitle(R.string.STT)
|
||||
.setMessage(R.string.explain_record_audio_request)
|
||||
.setPositiveButton(R.string.OK) { dialog, id ->
|
||||
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.RECORD_AUDIO), ASK_PERMISSIONS_RECORD_AUDIO)
|
||||
}
|
||||
.setNegativeButton(R.string.cancel) { dialog, id ->
|
||||
enableSttSwitch?.isChecked = false
|
||||
}
|
||||
.create()
|
||||
.show()
|
||||
} else {
|
||||
// No explanation needed, we can request the permission.
|
||||
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.RECORD_AUDIO), ASK_PERMISSIONS_RECORD_AUDIO)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
|
||||
when (requestCode) {
|
||||
ASK_PERMISSIONS_RECORD_AUDIO -> {
|
||||
// If request is cancelled, the result arrays are empty.
|
||||
if ((grantResults.isNotEmpty() && grantResults[0] != PackageManager.PERMISSION_GRANTED)) {
|
||||
// permission denied
|
||||
Snackbar.make(
|
||||
findViewById(R.id.coordinatorLayout),
|
||||
R.string.audio_record_permission_denied,
|
||||
Snackbar.LENGTH_LONG
|
||||
).show()
|
||||
enableSttSwitch?.isChecked = false
|
||||
}
|
||||
return
|
||||
} else -> {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun startMatch(view: View) {
|
||||
val player1Name = player1NameInput?.text.toString()
|
||||
val player2Name = player2NameInput?.text.toString()
|
||||
val radioStarterId = starterRadioGroup?.checkedRadioButtonId
|
||||
val enableTTS = enableTtsSwitch?.isChecked
|
||||
val enableSTT = enableSttSwitch?.isChecked
|
||||
|
||||
// Save
|
||||
previousMatch?.edit()?.run{
|
||||
putString("previousPlayer1", player1Name)
|
||||
putString("previousPlayer2", player2Name)
|
||||
starterRadioGroup?.let{ putInt("previousStarterId", it.checkedRadioButtonId) }
|
||||
previousPlayers?.let { putStringSet("previousPlayers", it.plus(player1Name).plus(player2Name)) }
|
||||
enableTtsSwitch?.let { putBoolean("enableTTS", it.isChecked) }
|
||||
enableSttSwitch?.let { putBoolean("enableSTT", it.isChecked) }
|
||||
previousMatch?.edit()?.apply{
|
||||
player1Name.let { putString("previousPlayer1", it) }
|
||||
player2Name.let { putString("previousPlayer2", it) }
|
||||
radioStarterId?.let{ putInt("previousStarterId", it) }
|
||||
putStringSet("previousPlayers", previousPlayers.plus(player1Name).plus(player2Name))
|
||||
enableTTS?.let { putBoolean("enableTTS", it) }
|
||||
enableSTT?.let { putBoolean("enableSTT", it) }
|
||||
commit()
|
||||
}
|
||||
|
||||
startActivity(
|
||||
Intent(this, MatchActivity::class.java).apply {
|
||||
putExtra("player1Name", player1Name)
|
||||
putExtra("player2Name", player2Name)
|
||||
putExtra(
|
||||
"starterId",
|
||||
when(radioStarterId) {
|
||||
R.id.radioPlayer1Starts -> 0
|
||||
R.id.radioPlayer2Starts -> 1
|
||||
else -> 0
|
||||
}
|
||||
)
|
||||
putExtra("enableTTS", enableTTS)
|
||||
putExtra("enableSTT", enableSTT)
|
||||
}
|
||||
)
|
||||
|
||||
finish()
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user