ボタンをクリックすると、次の関数を呼び出しています。
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 秒間待機し、その後はクリックするたびに値が減少します。