简体   繁体   English

SOS手电筒-如何

[英]SOS flashlight - How to

I made a flashlight app and now I want to add sos morse code flashing. 我制作了一个手电筒应用,现在我想添加闪烁的莫尔斯电码。 This is my code for it but it doesen't work quite well, it blinks too fast so I need some kind of a delay, can anyone help? 这是我的代码,但是它不能很好地工作,它闪烁太快,所以我需要一些延迟,有人可以帮忙吗?

public void sos(View v) {
    String myString = "111000111";
    Handler handler = new Handler();


    for (int x = 0; x < myString.length(); x++) {
        if (myString.charAt(x) == '1') {
            handler.postDelayed(new Runnable() {
                public void run() {
                    params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
                    camera.setParameters(params);
                    camera.startPreview();
                }
            }, 300);


            handler.postDelayed(new Runnable() {
                public void run() {
                    params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
                    camera.setParameters(params);
                 }
            }, 300);


            handler.postDelayed(new Runnable() {
                public void run() {
                    params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
                    camera.setParameters(params);
                }
            }, 300);

        }

    }
}

Note: I am not an app programmer, but here is a sample of Thread.sleep(). 注意:我不是应用程序程序员,但这是Thread.sleep()的示例。 Good luck. 祝好运。

 for (int x = 0; x < myString.length(); x++) {
    if (myString.charAt(x) == '1') {                
          params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
          camera.setParameters(params);
          camera.startPreview();
    }     
    Thread.sleep(300);      


    params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
    camera.setParameters(params);


}

Second take on it. 第二点。 Assuming it is true you can't sleep the main thread, try this: 假设您无法进入主线程,请尝试以下操作:

int delay=0;
for (int x = 0; x < myString.length(); x++) {
    if (myString.charAt(x) == '1') {
        handler.postDelayed(new Runnable() {
                public void run() {
                    params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
                    camera.setParameters(params);
                    camera.startPreview();
                }
            }, (delay+=300));


        handler.postDelayed(new Runnable() {
                public void run() {
                    params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
                    camera.setParameters(params);
                 }
            }, (delay+=300));




        }

    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM