首页 > 解决方案 > 不允许多次按下按钮

问题描述

我正在使用 Camera2 API 构建一个相机应用程序,这对于 Android 开发来说相对较新。一切正常,只是解决了错误。但我有一个切换摄像头按钮,从前置摄像头到后置摄像头,反之亦然。如果用户持续按下按钮,应用程序将崩溃。尝试以一种在可以再次使用按钮之前完成它需要做的所有事情的方式来设置它。

我将按钮设置为启用,但按下后,它会禁用按钮,直到每次完成,然后重新启用,但这似乎不起作用:

//The button to switch the camera to front and back camera.
    mChangeCamera = (ImageButton) findViewById(R.id.change_camera);
    mChangeCamera.setEnabled(true);
    mChangeCamera.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
        mChangeCamera.setEnabled(false);
            closeCamera();
            //  stopBackgroundthread();
            if (mTextureView.isAvailable()) {
                setUpCamera(mTextureView.getWidth(), mTextureView.getHeight());
                transformImage(mTextureView.getWidth(), mTextureView.getHeight());
                connectCamera();

            } else {
                mTextureView.setSurfaceTextureListener(mSurfaceTextureListener);
            }

            mChangeCamera.setEnabled(true);
        }
    });

必须有一种简单的方法来做到这一点,但不能从搜索中找到任何东西。任何人都知道如何设置它以在用户按下按钮时不崩溃?

标签: javaandroid

解决方案


我通过计算多个按钮按下之间的时间来做到这一点......首先在你的班级中创建全局变量

private long mLastClickTime = 0;

以及点击之间持续时间的最终整数

 public static final int CLICK_TIME = 400;

然后在单击按钮时粘贴此代码

if (SystemClock.elapsedRealtime() - mLastClickTime < CLICK_TIME) {
      return;  //button pressed repeatedly so do nothing
}
mLastClickTime = SystemClock.elapsedRealtime();

       // button is not pressed repeatedly so add your desired action

当然,如果仍然出现错误,您可以增加 CLICK_TIME 值


推荐阅读