我正在编写一个应用程序的代码,当当前速度超过用户设置的警告速度限制时,该代码会发出“嘟嘟”声。下面显示的代码写在onLocationChanged()
内,但由于某些逻辑原因,它只发出一次哔声然后停止,这告诉我它经过一次循环,然后过去时间和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;
}
这是一个非常具体的问题,我找不到与此相关的任何内容。我知道对于专家来说这是一个非常简单的问题。
答案 0 :(得分:0)
这并不意味着在这里居高临下(这个答案听起来像你的经典IT服务台“你试过把它关掉再打开吗?”),只是覆盖了所有的基础。
您要更新curTime
吗?您所描述的内容是,如果pastTime
最初设置为远,而curTime
在循环外设置一次并且未更新,则会看到您的内容。
如果不这样做,您可能需要对if
语句(if
之前)中涉及的变量进行一些示例,以查看它们设置的值。
或者,事先强制其中一个条件为真(例如Activity.mySpeedmph = mySpeed_max + 1;
,以便检查其他条件的操作。