ボタンをクリックすると、次の関数を呼び出しています。
private void badButtonHandler() {
    Camera.Parameters params = mCamera.getParameters();
    params.setColorEffect(Camera.Parameters.EFFECT_NEGATIVE);
    mCamera.setParameters(params);
    if(thread != null){
        thread = null;
    }
    thread = new Thread()
    {
        @Override
        public void run() {
            try {
                while(true) {
                    sleep(5000);
                    Camera.Parameters params = mCamera.getParameters();
                    params.setColorEffect(Camera.Parameters.EFFECT_NONE);
                    mCamera.setParameters(params);
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    };
    thread.start();
}
この関数は、ボタン クリックの 5 秒後にカメラの色効果を変更することを目的としています。関連するボタンを初めて押すと、期待どおりに動作します。ただし、この関数をさらに呼び出すと、期待どおりに動作しません。つまり、2 回目は 2 秒間待機し、その後はクリックするたびに値が減少します。