Условный звуковой сигнал не работает

Я пишу код для приложения, которое издает звуковой сигнал, когда текущая скорость превышает установленное пользователем ограничение скорости предупреждения. Показанный ниже код написан внутри onLocationChanged(), но по какой-то логической причине он издает звуковой сигнал только один раз, а затем останавливается, что говорит мне о том, что он проходит цикл один раз, после чего pastTime и curTime теряют след, а условие if логически неверно. после и, следовательно, пропуская цикл. Причина, по которой я хотел задержку в 5 секунд, состоит в том, чтобы иметь достаточную задержку между звуковыми сигналами и не перекрывать их. Я инициализировал pasTime с 0 в самом начале действия. Любое предложение по исправлению для этого приветствуется. Также curTime = c.getTimeInMillis() каждый раз, когда происходит изменение местоположения в прослушивателе местоположения.

if (Activity2.mySpeedmph > mySpeed_max & curTime > pastTime+5000)
{
    player = MediaPlayer.create(Activity2.this, R.raw.beep);  
    player.setLooping(false);     
    player.setVolume(100,100);         
    player.start();    
    pastTime = curTime;
}

Это очень специфическая проблема, и я не мог найти ничего, связанного с этим. Я знаю, что это очень простой вопрос для эксперта.


person user1388402    schedule 11.05.2012    source источник


Ответы (1)


Не хочу быть здесь снисходительным (этот ответ звучит как ваша классическая ИТ-служба поддержки: «Вы пробовали выключить и снова включить?»), Просто охватывая все основания.

Вы обновляете curTime? То, что вы описываете, это то, что вы бы увидели, если бы pastTime изначально было установлено далеко в прошлом, а curTime было установлено один раз вне цикла и не обновлялось.

В противном случае вам, вероятно, потребуется взять несколько образцов переменных, участвующих в этом операторе if (до if), чтобы увидеть, какие значения они установлены.

Или заранее задайте истинность одного из условий (например, с помощью Activity.mySpeedmph = mySpeed_max + 1;, чтобы проверить работу другого условия.

person paxdiablo    schedule 11.05.2012
comment
curTime постоянно обновляется внутри locationlistener, он расположен прямо под getSpeed(), и я вижу изменение скорости, так что это говорит мне о том, что curTime также должен меняться. - person user1388402; 11.05.2012