在过去的2个小时里,我一直试图让我的机器人的手电筒闪烁,我似乎无法让它工作。我想要的是每500毫秒左右手电筒反复闪烁,直到我点击一个按钮。
这是我尝试过的,它什么也没做。它甚至没有打开手电筒或产生异常:
private void blinkLight() {
cam = Camera.open();
params = cam.getParameters();
Thread t = new Thread(){
public void run(){
while(userHasntPressedButton){
params.setFlashMode(Camera.Parameters.FLASH_MODE_ON);
try {
currentThread().sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
}
}
};
t.start();
}
大多数其他帖子建议使用非连续闪烁,或使用类似于此方法,但在处理程序中,但没有一个正在工作。这是我最接近的尝试。
我怎么能闪烁手电筒?另外,没有相机许可,有没有办法做到这一点?
答案 0 :(得分:0)
public void lightBlinking()
{
if (blink) {
flashThread = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < System.currentTimeMillis(); i++) {
if (isFlashOn) {
turnOffFlash();<--- // method to OFF flash light
} else {
turnOnFlash();<--- // method to ON flash light
}
try {
Thread.sleep(1000);<---- // set your time
} catch (InterruptedException e) {
e.printStackTrace();
}
if (!blink){ <--- // asign true false for this boolean
//when you want to blink your flash
flashThread.stop();
break;
}
}
}
});
flashThread.start();
}
}
答案 1 :(得分:-1)
尝试使用此代码而不是使用切换方法,0和1用于ON和OFF Flash Light。
String myString = "0101010101";
long blinkDelay 500; //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();
}
}
没有&#34; Thread.sleep()&#34;你的代码可能太快了。