2

我已经定时接近传感器的变化为

 override fun onSensorChanged(event: SensorEvent) {
       val distance = event.values[0]
       val max = event.sensor.maximumRange
       a = System.currentTimeMillis()
    if (distance < Math.min(max, 8.toFloat())) {
        listener.onNear()
    } else {
        listener.onFar()
    }

        b = System.currentTimeMillis()
    System.out.println("That took " + (b- a) + " milliseconds")
}

这存在于我的 ProximityDetector.kt 文件中

并使用在我的应用程序上显示它

timeTaken.setText("That took " + (b - a) + " milliseconds")

在我的 SettingsActivity.kt 文件中

但它仅显示一个传感器更改的值,对于后续传感器更改,应用程序需要撤回并再次打开。如何显示每个传感器变化的值???我试过用这种方式

override fun onSensorChanged(event: SensorEvent) {
    timeTaken.setText("That took " + (b - a) + " milliseconds")}

但它显示修饰符“覆盖”不适用于本地功能

4

2 回答 2

0

interface在 ProximityDetector.kt 文件中创建。

interface OnSensorValueChange{
    fun onValueChange(value: Long);
}

在 SettingsActivity.kt 文件中实现它。

override fun onValueChange(value: Long) {
    timeTaken.setText("That took " + value + " milliseconds")
}

在类构造函数中传递SettingsActivity引用ProximityDetector并分配它。

class ProximityDetector constructor(var onSensorValueChange: ProximityDetector.OnSensorValueChange)

并调用接口的方法来更新值。

    override fun onSensorChanged(event: SensorEvent) {
       val distance = event.values[0]
       val max = event.sensor.maximumRange
       a = System.currentTimeMillis()
    if (distance < Math.min(max, 8.toFloat())) {
        listener.onNear()
    } else {
        listener.onFar()
    }

        b = System.currentTimeMillis()
    System.out.println("That took " + (b- a) + " milliseconds")
    onSensorValueChange.onValueChange((b- a)) //add this line.
}  
于 2018-01-18T07:31:31.470 回答
-2

在 kotlin 中,不要像在 java 中那样使用 getter 和 setter。下面给出了 kotlin 的正确格式。

val textView: TextView = findViewById(R.id.android_text) as TextView
textView.setOnClickListener {
    textView.text = getString(R.string.name)
}

要从 Textview 中获取值,我们必须使用此方法

val str: String = textView.text.toString()

 println("the value is $str")
于 2018-01-18T07:00:27.277 回答