gpt4 book ai didi

android - 如何在 Android 中创建快速或慢速相机闪光灯闪烁信号?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:48:56 28 4
gpt4 key购买 nike

我有发出闪烁信号的服务:

    public class FlashBlinkService extends Service 
{
private static Camera cam = null;
private Handler handler = new Handler();

@Override
public IBinder onBind(Intent intent)
{
return null;
}

@Override
public void onCreate()
{
super.onCreate();
startFlashBlink();
}

//for simulating flash blink
Runnable flashBlinkRunnable = new Runnable()
{
public void run()
{
cam = Camera.open();
Parameters p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
cam.startPreview();
p.setFlashMode(Parameters.FLASH_MODE_OFF);
cam.setParameters(p);
cam.stopPreview();
cam.release();
cam = null;
//--->
handler.post(flashBlinkRunnable);
}
};

//start flash blink light
public void startFlashBlink()
{
flashBlinkRunnable.run();
}

//stop flash blink light
public void stopFlashBlink()
{
handler.removeCallbacks(flashBlinkRunnable);
stopCamera(cam);
}

//stop camera
private void stopCamera(Camera cam)
{
if (cam != null)
{
cam.stopPreview();
cam.release();
cam = null;
}
}

@Override
public void onDestroy()
{
super.onDestroy();
handler.removeCallbacks(flashBlinkRunnable);
stopCamera(cam);
}
}

这是目前对我来说“最快”的闪光灯闪烁解决方案。哪个是制作更快或更慢的闪光闪烁信号的最佳方法?市场上有很多应用程序(如一些手电筒)提供此选项。谢谢。

最佳答案

我已经通过以下方式实现了这一点。频闪(闪光灯闪烁)的频率由 Thread.sleep() 函数中的 sleepMS 变量调节。例如,如果您想要以 10 Hz 的频率闪烁 10 次,您可以设置

sleepMS=(1/10)*50;
flashCount=10;

或者更一般的:

sleepMS=(1/Hz)*1000/2

不确定是否是实现此目的的最佳方式,但它确实有效。

Camera cam;
Parameters params;

private void main(){
cam = Camera.open();
params = cam.getParameters();
cam.setPreviewTexture(new SurfaceTexture(0));
cam.startPreview();

for (int i = 0; i < flashCount; i++) {
flipFlash();
Thread.sleep(sleepMS);
flipFlash();
Thread.sleep(sleepMS);
}
cam.stopPreview();
cam.release();
}

private void flipFlash(){
if (isLighOn) {
params.setFlashMode(Parameters.FLASH_MODE_OFF);
cam.setParameters(params);
isLighOn = false;
} else{
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(params);
isLighOn = true;
}
}

关于android - 如何在 Android 中创建快速或慢速相机闪光灯闪烁信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21064391/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com