Android 当循环开始时,其他一切都被忽略
所以我想写的是频闪仪(手电筒以某种高频率闪烁)。但问题是,当我启动它时,它工作了,但当我再次按下按钮关闭它时,什么也没发生 代码块:Android 当循环开始时,其他一切都被忽略,android,Android,所以我想写的是频闪仪(手电筒以某种高频率闪烁)。但问题是,当我启动它时,它工作了,但当我再次按下按钮关闭它时,什么也没发生 代码块: protected void onCreate(Bundle savedInstanceState) { ... // Some code for checking if flashlight availabe and listener for seekbar for getting frequncy ... // My button listener (
protected void onCreate(Bundle savedInstanceState) {
...
// Some code for checking if flashlight availabe and listener for seekbar for getting frequncy
...
// My button listener (but1 - button)
but1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (flashOn) {
// turn off flash
turnOffFlash();
} else {
// turn on flash
turnFlashOn();
}
}
});
而现在主要的大块代码,我不认为我可以跳过任何一个
private void getCamera() {
if(cam == null) {
try {
cam = Camera.open();
params = cam.getParameters();
} catch(RuntimeException e) {
Log.e("Camera failed to open", e.getMessage());
}
}
}
private void turnFlashOn() {
if(!flashOn) {
if(cam == null || params == null) {
return;
}else {
if (freq == 0) {
camParams.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
}
else {
sr = new StroboRunner();
sr.freq = freq;
t = new Thread(sr);
t.start();
strob = true;
return ;
}
}
}
}
private void turnOffFlash() {
if(flashOn){
if(cam == null || params == null) {
return;
}
if(strob){
sr.stopRunning = true;
t = null;
strob = false;
return;
}
else camParams.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
}
cam.setParameters(camParams);
cam.startPreview();
}
private class StroboRunner implements Runnable {
int freq;
boolean stopRunning = false;
@Override
public void run() {
Camera.Parameters paramsOn = cam.getParameters();
Camera.Parameters paramsOff = cam.getParameters();
paramsOn.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
paramsOff.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
try {
while (!stopRunning) {
cam.setParameters(paramsOn);
cam.startPreview();
Thread.sleep(freq);
cam.setParameters(paramsOff);
cam.stopPreview();
Thread.sleep(freq);
}
}
catch(Throwable t) {}
}
}
我不是很高级,所以我不知道我写了20%的东西,因为一半是我自己的教程,一半是我自己写的代码。我看不到你在哪里设置了
闪光灯,比如:
flashOn = true;
您可能单击该按钮并获得!每次都使用flash。您的关闭flash()
方法的作用是什么?