Как я могу установить кнопку оставаться PRESSEDstay TOUCHED, после того, как она нажата, коснулась - PullRequest
0 голосов
/ 28 октября 2019

Я хочу запустить 2 функции с помощью кнопки (startButton). Проблема в том, что когда я запускаю эти две функции с помощью кнопки, они запускаются, и через 1 секунду функции больше не отвечают. Я должен нажать кнопку снова и снова, чтобы перезапустить эти две функции. Я попробовал метод OnClickListener и метод OnTouchListener. Оба запускают функции, но через 1 секунду результаты совпадают.

StartButton вызывает его, но только на секунду !!!

       btnStart.setOnTouchListener(object: View.OnTouchListener{
                                  override fun onTouch(v: View?, event: MotionEvent?): Boolean {
                                        startTimer()
                                        startLocationUpdates()
                                        startDistance(location)
                                        startTempo()
                                      return true
                                  }
                              })

эти 2 функции должны бытьзвонил / работает в течение короткого времени / 1-2 секунды

    fun startDistance(location: Location): Float {
        val distance = mCurrentLocation?.distanceTo(location) ?: 0f
        mCurrentLocation = location
        if (location.hasAccuracy()) {
            totalDistance += distance / 1000 // zusätzliche Var für die gesammte Distanz
            tvDistanzKm.text = totalDistance.toString()
            tvDistanzTest.text = distance.toString()
        }
        return totalDistance
    }

    fun startTempo() {
        fusedLocationProviderClient.lastLocation.addOnSuccessListener { location ->
            if (location.hasSpeed()) {
                val getkmh = (location.speed * 3.6)//*3,6
                val kmh = getkmh.toFloat()
                totalTime += kmh
                normalTime = kmh
                timeDevided = normalTime / totalTime
                tvTempo.text = normalTime.toString()
                tvTempoTest.text = timeDevided.toString()
            } else {
                tvTempo.text = ("0.00")
                tvTempoTest.text = ("0.00")
            }
        }
    }

, если у кого-то есть решение, подсказка или пример .??? Спасибо за помощь. Привет

1 Ответ

0 голосов
/ 01 ноября 2019

Хорошо, потому что кнопка все еще не работает, даже тумблер не работает. Я нашел решение, которое работает, но на данный момент это просто решение. я просто убрал самый быстрый интервал и интервал из функции и сделал pauseLocation. это работает, но это не совсем решение для кнопки !!!

    fun startLocationUpdates() {
        mLocationRequest = LocationRequest()
        mLocationRequest.priority = LocationRequest.PRIORITY_HIGH_ACCURACY
        mLocationRequest.fastestInterval = 2000
        mLocationRequest.interval = 5000
        fusedLocationProviderClient!!.requestLocationUpdates(
            mLocationRequest,
            mLocationCallback,
            mainLooper
        )
    }
fun pauseLocationUpdates(){
        mLocationRequest = LocationRequest()
        mLocationRequest.priority = LocationRequest.PRIORITY_HIGH_ACCURACY
        fusedLocationProviderClient!!.requestLocationUpdates(
            mLocationRequest,
            mLocationCallback,
            mainLooper)
...