【发布时间】:2021-07-29 14:44:41
【问题描述】:
我正在研究 android 传感器,我正在尝试基于软件的计步器传感器,但它不是从 0 开始,而是从 512 继续,我可以理解它写了每日步数作为原因,但是当我要制作计步器应用程序时,如何将其设置为从0开始计数?
class MainActivity : AppCompatActivity() , SensorEventListener {
private lateinit var sensorManager : SensorManager
private lateinit var step_sensor : Sensor
lateinit var txt : TextView
override fun onCreate(savedInstanceState : Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager
step_sensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER)
txt = findViewById(R.id.text1)
}
override fun onResume() {
super.onResume()
sensorManager.registerListener( this , step_sensor , SensorManager.SENSOR_DELAY_NORMAL)
}
override fun onSensorChanged(event : SensorEvent?) {
txt.text = event?.values?.get(0).toString()
}
override fun onAccuracyChanged(sensor : Sensor?, accuracy : Int) {
if (sensor == step_sensor ) {
when (accuracy) {
SensorManager.SENSOR_STATUS_ACCURACY_HIGH -> {
Toast.makeText(this,"Sensör yüksek doğrulukta çalışmaktadır ." , Toast.LENGTH_SHORT).show()
}
SensorManager.SENSOR_STATUS_ACCURACY_MEDIUM -> {
Toast.makeText(this,"Sensör orta doğrulukta çalışmaktadır ." , Toast.LENGTH_SHORT).show()
}
SensorManager.SENSOR_STATUS_ACCURACY_LOW -> {
Toast.makeText(this,"Sensör düşük doğrulukta çalışmaktadır ." , Toast.LENGTH_SHORT).show()
}
SensorManager.SENSOR_STATUS_UNRELIABLE -> {
Toast.makeText(this,"Sensör çok düşük doğrulukta çalışmaktadır ." , Toast.LENGTH_SHORT).show()
}
}
}
}
override fun onPause() {
super.onPause()
sensorManager.unregisterListener( this )
}
}
【问题讨论】:
-
如果你想显示一个从 0 开始的数字,那么只需存储 你 希望它开始计数时的初始值,然后从每个新值中减去它(在同一天)在显示之前。
-
@GenerousBadger 对不起,我没听懂,你能不能描述得更详细些?
-
如果你从 API 得到的数字是 512, 513, 514, ... 但你想显示 0, 1, 2, ... 那么只需记住(存储)第一个数字 ( 512)某处并在显示之前减去每次出现的数字。
-
现在我明白了,谢谢,但我不知道该怎么做,但你在我的脑海中创造了一些想法,我会以某种方式处理它,谢谢
标签: android-studio kotlin android-sensors