android - 在一段时间过去之前检测按钮是否被按下

标签 android

我目前正在开发一款 Android 应用程序,用于一项研究,要求参与者在经过一定时间之前按下按钮。如果他们在时间到之前没有按下按钮,应用程序应该进入下一个试用期。所有关于在能够被打断的情况下等待一定时间的答案都涉及线程,而我对此经验不多。这是我目前拥有的:

            final Long time = System.currentTimeMillis();
        end = time + timeAllowed;

        //button click listeners
        Log.d("Here", "ClickListener");
        low.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                response = 0;
                end = (long)0;
                Log.d("Clicked", "Clicked!");
            }
        });
        high.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                response = 1;
                end = (long)0;
            }
        });
        //actually waiting
        //This is a really stupid hack
        while(System.currentTimeMillis() < end)
        {}//nothing happens yet
        //timeAllowed has passed
        responseTime = System.currentTimeMillis() - time;

这全部包含在 48 次试验的 for 循环中。出于某种原因,我的 onClickListeners 在 for 循环执行完成之前无法正确创建,即使我将它们放在 for 循环开头之上也是如此。此外,代码无法标记应该按下哪个按钮,直到循环结束(通过在显示的代码段上方设置 button.setText 来完成)。我可能做错了什么?

为了完全清楚,我想在继续之前等待按钮按下或时间到期。

Cory 的响应是我目前已经实现的。

我真的需要对此做出回应。谢谢 请帮忙。

最佳答案

System.currentTimeMillis() 记录按钮第一次显示的时间,然后用同样的方法获取按钮被点击的时间。不同之处在于他们花了多长时间。

要记录在特定时间内未发生的点击,您可以使用此 ,它将与开始时间的记录一起放入您的 onResume 中。

Handler handlerTimer = new Handler();

handlerTimer.postDelayed(new Runnable(){
    public void run() {
      // do something             
  }}, 20000);

关于android - 在一段时间过去之前检测按钮是否被按下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42404773/

相关文章:

java - 我在运行 Android 应用程序时收到 jar 文件错误

android - 我无法将 actionbarsherlock 连接到项目

android - 如何将颜色名称转换为其等效的十六进制代码?

java - Android搜索(EditText)功能在fragment ExpandableListView中

java - 检查 android 设备是否支持 4K 视频?

Android如何在具有 ImageView 和 TextView 的圆形中创建这样的 View

android - 在 android 中使用 animationSet() 动画

java - 如何在等待 Web 服务响应时显示 "loading..."消息

android - 如何在 XMPP SMACK 库中获取服务器时间

java - Android Beam - 如何发送正确的数据?