【问题标题】:How to make android phone flashlight blink?如何让安卓手机手电筒闪烁?
【发布时间】:2012-05-15 06:15:15
【问题描述】:

我正在尝试根据二进制代码使 android 手机的 LED 手电筒闪烁,例如 if char = 1 打开 LED 灯,否则如果 char = 0 关闭 LED。

if ( char == '1'){ params.setFlashMode(Parameters.FLASH_MODE_ON); }              
if ( char == '0'){ params.setFlashMode(Parameters.FLASH_MODE_OFF);}

所以我从String str ="101010101" 获取字符,字符获取值 1、0、1 等等,这应该使手电筒闪烁,但它会闪烁,仅此而已。我应该如何解决这个问题? 谢谢

【问题讨论】:

标签: android android-intent android-activity android-hardware


【解决方案1】:

试试这个:

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();
   }
}

如果没有“Thread.sleep()”,您的代码可能太快了。

【讨论】:

【解决方案2】:

使用这个方法有效, 我在我的应用中使用

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;
        }
    }

【讨论】:

    【解决方案3】:
    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);
                }
    
            }
    

    也许你的问题已经解决了 不过我觉得这个闪的太快了……

    【讨论】:

    • 如何无限闪?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多