的Android如何使LED闪烁/手电筒迅速 [英] Android How to blink led/flashlight rapidly
问题描述
我想给带LED /手电筒一定的影响。但它不是快速闪烁,即使我想睡觉(2),BT是需要时间的闪烁。我想更快地闪烁了。
公共无效flash_effect()抛出InterruptedException的
{
凸轮= Camera.open();
最终的参数P = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
线程=新的Thread()
{
公共无效的run()
{
的for(int i = 0;我小于10;我++)
{
cam.setParameters(对);
cam.start preVIEW();
尝试 {
视频下载(50);
}赶上(InterruptedException异常E){
// TODO自动生成的catch块
e.printStackTrace();
}
cam.stop preVIEW();
尝试 {
视频下载(50);
}赶上(InterruptedException异常E){
// TODO自动生成的catch块
e.printStackTrace();
}
}
}
};
a.start();
}
在何处设置你的preVIEW显示?
https://developer.android.com/reference/android/hardware/ Camera.html
重要提示:通过完全初始化SurfaceHolder到 集previewDisplay(SurfaceHolder)。未经表面,相机会 无法启动preVIEW。
cam.set previewDisplay(空);
也许你应该试试这个:
线程t =新的Thread(){
公共无效的run(){
尝试 {
//切换凸轮的应用程序的生命
如果(mCamera == NULL){
//开启凸轮
mCamera = Camera.open();
尝试 {
mCamera.set previewDisplay(空);
}赶上(IOException异常E){
e.printStackTrace();
}
mCamera.start preVIEW();
}
的for(int i = 0; I<倍* 2;我++){
toggleFlashLight();
睡眠(延迟);
}
如果(mCamera!= NULL){
mCamera.stop preVIEW();
mCamera.release();
mCamera = NULL;
}
}赶上(例外五){
e.printStackTrace();
}
}
};
t.start();
需要的功能:
/ **打开设备手电筒* /
公共无效turnOn(){
如果(mCamera!= NULL){
//开启LED
mParams = mCamera.getParameters();
mParams.setFlashMode(Parameters.FLASH_MODE_TORCH);
mCamera.setParameters(mParams);
关于= TRUE;
}
}
/ **关闭设备手电筒关* /
公共无效关断(){
//关闭手电筒
如果(mCamera!= NULL){
mParams = mCamera.getParameters();
如果(mParams.getFlashMode()。等于(Parameters.FLASH_MODE_TORCH)){
mParams.setFlashMode(Parameters.FLASH_MODE_OFF);
mCamera.setParameters(mParams);
}
}
关于= FALSE;
}
/ **打开/关闭状态*手电筒/
公共无效toggleFlashLight(){
如果(!上){//关闭,打开它
打开();
}其他{//打开,将其关闭
关掉();
}
}
和需要的情况下瓦尔:
相机mCamera;
Camera.Parameters mParameters;
INT延迟= 100; //在毫秒
I am trying to give some effects with led/flashlight. but it is not blinking rapidly, even i tried sleep(2), bt it takes time to blink. i want to blink it faster.
public void flash_effect() throws InterruptedException
{
cam = Camera.open();
final Parameters p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
Thread a = new Thread()
{
public void run()
{
for(int i =0; i < 10; i++)
{
cam.setParameters(p);
cam.startPreview();
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
cam.stopPreview();
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
};
a.start();
}
Where do you set your preview display?
https://developer.android.com/reference/android/hardware/Camera.html
Important: Pass a fully initialized SurfaceHolder to setPreviewDisplay(SurfaceHolder). Without a surface, the camera will be unable to start the preview.
cam.setPreviewDisplay(null);
Maybe you should try this:
Thread t = new Thread() {
public void run() {
try {
// Switch on the cam for app's life
if (mCamera == null) {
// Turn on Cam
mCamera = Camera.open();
try {
mCamera.setPreviewDisplay(null);
} catch (IOException e) {
e.printStackTrace();
}
mCamera.startPreview();
}
for (int i=0; i < times*2; i++) {
toggleFlashLight();
sleep(delay);
}
if (mCamera != null) {
mCamera.stopPreview();
mCamera.release();
mCamera = null;
}
} catch (Exception e){
e.printStackTrace();
}
}
};
t.start();
Needed functions:
/** Turn the devices FlashLight on */
public void turnOn() {
if (mCamera != null) {
// Turn on LED
mParams = mCamera.getParameters();
mParams.setFlashMode(Parameters.FLASH_MODE_TORCH);
mCamera.setParameters(mParams);
on = true;
}
}
/** Turn the devices FlashLight off */
public void turnOff() {
// Turn off flashlight
if (mCamera != null) {
mParams = mCamera.getParameters();
if (mParams.getFlashMode().equals(Parameters.FLASH_MODE_TORCH)) {
mParams.setFlashMode(Parameters.FLASH_MODE_OFF);
mCamera.setParameters(mParams);
}
}
on = false;
}
/** Toggle the flashlight on/off status */
public void toggleFlashLight() {
if (!on) { // Off, turn it on
turnOn();
} else { // On, turn it off
turnOff();
}
}
and needed instance vars:
Camera mCamera;
Camera.Parameters mParameters;
int delay = 100; // in ms
这篇关于的Android如何使LED闪烁/手电筒迅速的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!