How to make android phone flashlight blink?

前端 未结 3 384
盖世英雄少女心
盖世英雄少女心 2021-01-25 05:11

I am trying to make the LED flashlight of android phone blink based on binary code like if char = 1 turn LED light on else if char = 0 turn LED off.

if ( char ==         


        
相关标签:
3条回答
  • 2021-01-25 06:01

    use this method it works, im using in my app

    private void blink(final int delay, final int times) {
            Thread t = new Thread() {
                public void run() {
                    try {
    
                        for (int i=0; i < times*2; i++) {
                            if (isFlashOn) {
                                turnOffFlash();
                            } else {
                                turnOnFlash();
                            }
                            sleep(delay);
                        }
    
                    } catch (Exception e){ 
                        e.printStackTrace(); 
                    }
                }
            };
            t.start();
            }
    
         private void turnOnFlash() {
            if (!isFlashOn) {
                if (camera == null || params == null) {
                    return;
                }
    
                params = camera.getParameters();
                params.setFlashMode(Parameters.FLASH_MODE_TORCH);
                camera.setParameters(params);
                camera.startPreview();
                isFlashOn = true;
            }
    
        }
    
        private void turnOffFlash() {
            if (isFlashOn) {
                if (camera == null || params == null) {
                    return;
                }
                params = camera.getParameters();
                params.setFlashMode(Parameters.FLASH_MODE_OFF);
                camera.setParameters(params);
                camera.stopPreview();
                isFlashOn = false;
            }
        }
    
    0 讨论(0)
  • 2021-01-25 06:08

    Try this :

    String myString = "0101010101";
    long blinkDelay = 50; //Delay in ms
    for (int i = 0; i < myString.length(); i++) {
       if (myString.charAt(i) == '0') {
          params.setFlashMode(Parameters.FLASH_MODE_ON);
       } else {
          params.setFlashMode(Parameters.FLASH_MODE_OFF);
       }
       try {
          Thread.sleep(blinkDelay);
       } catch (InterruptedException e) {
          e.printStackTrace();
       }
    }
    

    Without the "Thread.sleep()" your code is probably too fast.

    0 讨论(0)
  • 2021-01-25 06:11
    String[] list1 = { "1", "0", "1", "0", "1", "0", "1", "0", "1", "0" };
            for (int i = 0; i < list1.length; i++) {
                if (list1[i].equals("0")) {
                    params.setFlashMode(Parameters.FLASH_MODE_ON);
                } else {
                    params.setFlashMode(Parameters.FLASH_MODE_OFF);
                }
    
            }
    

    may be your problem solved but I think this one is too fast to blink......

    0 讨论(0)
提交回复
热议问题