Я создаю приложение для Android, используя Kotlin.
Мне нужно в моей деятельности, чтобы запустить таймер примерно через 60 секунд, после этого, когда этот первый таймер закончился, мне нужно начать второй таймер около 50 секунд, но когда я запускаю второй таймер, он сразу заканчивается. Так что это мой код: < /p>
Это метод CREATE, и в этом методе я запускаю метод вызова первого таймера "startFirstTimer" < /p>
@SuppressLint("SuspiciousIndentation")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
inputFormat.timeZone = TimeZone.getTimeZone("UTC")
outputFormat.timeZone = TimeZone.getTimeZone("Europe/Paris")
configuration = Configuration.getInstance(applicationContext)
binding = ActivityTaraturaBinding.inflate(layoutInflater)
setContentView(binding.root)
ViewCompat.setOnApplyWindowInsetsListener(binding.root) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
Paper.init(applicationContext)
//inizializzo la libreria.
elab = Elaborazionesegnale(applicationContext)
editProfileViewModel = ViewModelProvider(this)[EditProfileViewModel::class.java]
editProfileViewModel.editProfileData.observe(this) { profileData ->
if (profileData != null) {
userData = profileData
answers = profileData.skills?.toMutableList() ?: mutableListOf()
if(userData!!.birthDate==null){
//esco dalla schermata e riporto l'utente nella home.
Toast.makeText(applicationContext, "Data di nascia mancante.", Toast.LENGTH_SHORT).show()
openEditView()
//finish()
}else if(userData!!.gender==null){
Toast.makeText(applicationContext, "Sesso mancante.", Toast.LENGTH_SHORT).show()
//esco dalla schermata e riporto l'utente nella home.
openEditView()
//finish()
}else{
//adesso devo verificare peso altezza + uso betabloccanti.
var peso: Float =0.0f;
var altezza: Float =0.0f;
var betaBloccanti: Boolean? =null;
for (answer in answers) {
if(answer.id == 1000){
if(answer.valore == null){//PESO
Toast.makeText(applicationContext, "Peso mancante.", Toast.LENGTH_SHORT).show()
openEditView()
//finish()
}
else {
peso = answer.valore!!.toFloat()
}
}else if(answer.id == 1001){//ALTEZZA
if(answer.valore == null){
Toast.makeText(applicationContext, "Altezza mancante.", Toast.LENGTH_SHORT).show()
openEditView()
//finish()
}else{
altezza = answer.valore!!.toFloat()
}
}else if(answer.id == 1002){//BETABLOCCANTI
if(answer.valore == null){
Toast.makeText(applicationContext, "Betabloccanti mancante.", Toast.LENGTH_SHORT).show()
openEditView()
//finish()
}else{
betaBloccanti = answer.valore!!.toBoolean()
}
}
}
val date = SimpleDateFormat("dd/MM/yyyy").parse(userData!!.birthDate)
var resultInizializzazione = elab!!.Inizializzazione(userData!!.id.toString(),date, userData!!.gender.toCharArray()[0],peso,altezza,betaBloccanti)
Log.i("ELABSEGNALI", resultInizializzazione.toString());
binding.textViewInizializzazioneEsito.visibility = View.VISIBLE
binding.textViewIndividualizzazione.visibility = View.VISIBLE
if(resultInizializzazione==0){
binding.textViewInizializzazioneEsito.text = "OK"
}else{
binding.textViewInizializzazioneEsito.text = "KO"
//binding.textViewInizializzazioneEsito.setTextColor(Color.Red)
}
var resultIndividualizzazione = elab!!.Individualizzazione();
Log.i("ELABSEGNALI", resultIndividualizzazione.toString());
binding.textViewIndividualizzazioneEsito.visibility = View.VISIBLE
if(resultIndividualizzazione==0){
binding.textViewIndividualizzazioneEsito.text = "OK"
binding.tvTimer.visibility = View.VISIBLE
binding.tvTimer.text= "${formatSecond(time_in_milliseconds/1000)}"
val alertDialog: android.app.AlertDialog? = android.app.AlertDialog.Builder(this).create()
alertDialog!!.setTitle("Inizio taratura dei sensori")
alertDialog.setMessage("Dovrai rimanere seduto per una corretta taratura, clicca OK quando sei pronto.")
alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "OK",
DialogInterface.OnClickListener { dialog, which ->
dialog.dismiss() // dialog.dismiss() })
alertDialog.show()
}else{
binding.textViewIndividualizzazioneEsito.text = "KO"
//binding.textViewInizializzazioneEsito.setTextColor(Color.Red)
}
}
//avvio la libreria.
}
}
//prima di passare al metodo di inizializzazione è necessario verificare che siamo impostati
//tutti i parametri obbligatori.
//elab.Inizializzazione()
editProfileViewModel.getUserProfileDataUsingIdProvider(configuration.getUserInfoEndpointUri().toString())
}
< /code>
Это метод Starfirsttimer: < /p>
private fun starFirstTimer(pauseOffSetL : Long){
countdown_timer = object : CountDownTimer(time_in_milliseconds - pauseOffSetL, 1000){
override fun onTick(millisUntilFinished: Long) {
pauseOffSet = time_in_milliseconds - millisUntilFinished
binding.tvTimer.text= (formatSecond(millisUntilFinished/1000)).toString()
}
override fun onFinish() {
//adesso devo chiedere all utente di alzarsi e di rimanere alzato per almeno 5 secondi.
//unregisterReceiver(gpReceiver);
countdown_timer?.cancel()
binding.textViewTaratura.visibility = View.VISIBLE
binding.textViewTaraturaEsito.visibility = View.VISIBLE
//adesso chiesto all utente di alzarsi.
val alertDialog: android.app.AlertDialog? = android.app.AlertDialog.Builder(this@TaraturaActivity).create()
alertDialog!!.setTitle("Taratura dei sensori")
alertDialog.setMessage("Adesso alzati in piedi cercando di rimanere fermo fino allo scadere del timer, clicca OK quando sei pronto.")
alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "OK",
DialogInterface.OnClickListener { dialog, which ->
dialog.dismiss() // dialog.dismiss() })
alertDialog.show()
}
}.start()
}
< /code>
Infinish Method I Запускаю второй таймер, это метод второго тимамера: < /p>
private fun starSecondTimer(pauseOffSetL : Long){
countdown_second_timer = object : CountDownTimer(time_in_second_milliseconds - pauseOffSetL, 1000){
override fun onTick(millisUntilFinished: Long) {
pauseOffSet = time_in_second_milliseconds - millisUntilFinished
binding.tvTimer.text= (formatSecond(millisUntilFinished/1000)).toString()
}
override fun onFinish() {
//adesso devo chiedere all utente di alzarsi e di rimanere alzato per almeno 5 secondi.
//unregisterReceiver(gpReceiver);
binding.textViewTaratura.visibility = View.VISIBLE
binding.textViewTaraturaEsito.visibility = View.VISIBLE
binding.tvTimer.visibility = View.INVISIBLE
binding.textViewMsgFinale.visibility = View.VISIBLE
//adesso chiesto all utente di alzarsi.
unregisterReceiver(gpReceiver);
//unregisterReceiver(mvReceiver);
}
}.start()
}
< /code>
Второй таймер не запускается .... и наглядный метод вызывается напрямую. Как я могу решить эту проблему?
Подробнее здесь: https://stackoverflow.com/questions/796 ... mer-is-end
Начните таймер, когда первый таймер закончится ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение