有条件的哔声不起作用

Posted

技术标签:

【中文标题】有条件的哔声不起作用【英文标题】:Conditional beep sound not working 【发布时间】:2012-05-11 01:20:12 【问题描述】:

我正在为一个应用程序编写一个代码,当当前速度超过用户设置的警告速度限制时,该应用程序会“发出哔哔声”。下面显示的代码写在onLocationChanged() 中,但由于某种逻辑原因,它只发出一次哔哔声然后停止,这告诉我它通过了一次循环,之后过去时间和 curTime 失去了轨道,if 条件不是之后逻辑上为真,因此跳过了循环。我想要延迟 5 秒的原因是在哔哔声之间有足够的时间延迟并且不让它们重叠。我在活动一开始就用 0 初始化了 pasTime。对此修复的任何建议表示赞赏。还有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;

这是一个非常具体的问题,我找不到与此相关的任何内容。我知道这对专家来说是一个非常简单的问题。

【问题讨论】:

【参考方案1】:

在这里没有居高临下的意思(这个答案听起来像您的经典 IT 帮助台“您是否尝试过将其关闭再打开?”),只是涵盖所有基础。

你在更新curTime吗?您所描述的是,如果 pastTime 最初设置在过去很长时间,并且 curTime 在循环之外设置一次并且没有更新,您会看到什么。

如果做不到这一点,您可能需要对 if 语句(if 之前)中涉及的变量进行一些抽样,以查看它们设置的值。

或者,预先强制其中一个条件为真(如Activity.mySpeedmph = mySpeed_max + 1;,以便检查其他条件的操作。

【讨论】:

curTime 在 locationlistener 中不断更新,它位于 getSpeed() 的正下方,我可以看到速度在变化,这告诉我 curTime 也应该在变化。

以上是关于有条件的哔声不起作用的主要内容,如果未能解决你的问题,请参考以下文章

C ++哔声不起作用

a(警报和哔声)转义序列字符在 C 语言中不起作用

循环,100% CPU 使用,使用睡眠不起作用?

C# - Console.Beep 在 Windows Vista 上不起作用

有条件的分配,为啥它不起作用?

为啥 Beep 功能在 Windows 10 上不起作用