我想要開始CountDownTimer
如果我的高度變化超出我使用氣壓計設置的值範圍。如果還有&&陳述不在裏面SensorManager
因此,例如,如果該值是> 40和43 <,沒有動作
如果該值是< 41和> 42,countdowntimer將開始滴答作響。
但是,如果值返回到41-42內部,那麼定時器將停止滴答等等。
這裏是我的代碼:
public SensorEventListener sensorEventListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
float pressure_value = 0.0f;
float height = 0.0f;
if (Sensor.TYPE_PRESSURE == event.sensor.getType())
{
pressure_value = event.values[0];
height = SensorManager.getAltitude(1009,pressure_value);
}
value = String.valueOf(height);
txtBaro.setText(value);
valueOftxtBaro = Float.parseFloat(value);
if (valueOftxtBaro < 41 && valueOftxtBaro > 42)
{
actCountDownTimer();
}
else if (valueOftxtBaro < 43 && valueOftxtBaro > 40)
{
cdt.cancel(); <------------------Here is line 202------------>
txtTest.setText("Paused");
}
else
{
txtTest.setText("Null");
}
}
這是CountDownTimer
代碼:
public void actCountDownTimer()
{
cdt = new CountDownTimer(total,1000) {
@Override
public void onTick(long millisUntilFinished) {
total = millisUntilFinished;
}
@Override
public void onFinish() {
}
當我運行這段代碼我得到一個錯誤:
Attempt to invoke virtual method 'void android.os.CountDownTimer.cancel()' on a null object reference
at skripsi.ubm.studenttracking.indoor$3.onSensorChanged(indoor.java:202)
}.start();
}
你能不能幫我解決這個?
我寫你的代碼和dimitri代碼。它第一次完美地工作。但是當條件返回false時,倒數計時器開始計時,然後當數值返回true時,倒計時器仍在滴答滴答。它應該怎麼做?如果valueoftxtbaro <42 ||,則爲 –
valueoftxtbaro> 43 {actCountDownTimer();} else if(valueoftxtbaro <44 || valueoftxtbaro> 41) {if(cdt!= null) {cdt.cancel(); }} –
查看更新的代碼示例,它現在能夠工作嗎? – JanneK