(1)关键代码
A,在AndroidManifest中注册相应的权限:
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.autofocus"/>
B,打开闪光灯关键代码:
Camera camera = Camera.open();
camera.startPreview();
parameter = camera.getParameters();
parameter.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(parameter);
C,关闭闪关灯关键代码:
parameter = camera.getParameters();
parameter.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(parameter);
(2)代码实例
在一个activity中放置两个按钮,一个打开闪光灯,一个关闭闪光灯。在4.0上试验成功,由于系统版本的关系,据说4.2上必须要有startPreview才能运行成功。
在XML中设定权限:
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
核心代码如下:
Button button = (Button) findViewById(R.id.button1);
Button button2 = (Button) findViewById(R.id.button2);
button.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v)
{
Log.i(TAG, "button.setOnClickListener! ");
try {
camera = Camera.open();
camera.startPreview();
if (camera != null)
Log.i(TAG, "open cameradevice success! ");
} catch (Exception e) { //防止程序运行异常报停
camera = null;
Log.w(TAG, "open cameraFail");
return;
}
parameters = camera.getParameters();
parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);//开启
camera.setParameters(parameters);
}
});
button2.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v)
{
Log.i(TAG, "button2.setOnClickListener! ");
if(camera != null){ // 容错,避免程序崩溃
parameters = camera.getParameters();
parameters.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(parameters);
camera.stopPreview();
camera.release();
camera = null;
}
}
});