如何在方法运行时更新值 - Java

时间:2014-02-06 01:46:21

标签: java android variables camera modifiers

所以我有这个非常奇怪的问题,我根本无法理解为什么它不起作用。我正在构建一个闪光灯作为我的应用程序的一部分,并创建了一个单独的Strobelight类。当我调用turnOn方法或更新方法时,间隔永远不会改变。我想这会使用一些代码更容易解​​释:

public class Strobelight{

private int delayOn, delayOff;

public void turnStrobeOn(){...}

public void update(int a_delayOn, int a_delayOff){
    delayOn = a_delayOn;
    delayOff = a_delayOff;
}

public void turnOn(int a_delayOn, int a_delayOff){
    delayOn = a_delayOn;
    delayOff = a_delayOff;
    this.turnStrobeOn();
}

根据闪光灯是否已经打开,可以调用其中一种方法以指定的间隔更改闪光灯的亮度,或者只是更改间隔。

不是将间隔更改为自定义内容,而是在调用Thread.sleep()以打开或关闭手电筒时,应用程序只使用最小的可能间隔

编辑:这是线程代码和打开手电筒的代码

public void turnStrobeOn(){

    for ( int i = 0; i < 3; i++){

        isInCycle = true;

        cam = Camera.open();
        Parameters p = cam.getParameters();
        p.setFlashMode(Parameters.FLASH_MODE_TORCH);
        cam.setParameters(p);
        cam.startPreview(); // the flashlight is now on
        lightIsOn = true;
        new Thread(new Runnable() {
            public void run() {
                try {
                    Thread.sleep(delayOn);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }).start();

        cam.stopPreview();
        cam.release();
        lightIsOn = false;
        new Thread(new Runnable() {
            public void run() {
                try {
                    Thread.sleep(delayOff);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }).start();

    } //end of for loop

        isInCycle = false;  

} // end of turnStrobeOn

1 个答案:

答案 0 :(得分:0)

你可能希望得到别人对这个购买的建议我最好的猜测是你不能在睡眠上这么具体()。另外不要忘记使用毫秒。我建议使用android处理程序并为此执行postDelayed而不是睡眠。

How to pause / sleep thread or process in Android?