我有一个问题,我们可以访问Android设备相机的闪光灯
程序化。这有可能以程序方式打开和关闭闪光灯吗?
请给我我的答案。
提前谢谢。
package com.thedevelopersinfo.tutorial.android.soundrecordingexample;
import java.io.File;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Intent;
import android.hardware.Camera;
import android.media.MediaRecorder;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.provider.MediaStore.MediaColumns;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class Main extends Activity {
private MediaRecorder mediaRecorder;
private File file = null;
static final String PREFIX = "record";
static final String EXTENSION = ".3gpp";
private Button b1;
Camera mCamera;
public boolean isOn=true;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mCamera = Camera.open();
Camera.Parameters params = mCamera.getParameters();
b1=(Button)findViewById(R.id.startBtn);
b1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
setFlashlight();
}
});
}
public void setFlashlight()
{
if (mCamera == null)
{
}
Camera.Parameters params = mCamera.getParameters();
String value;
if (isOn) // we are being ask to turn it on
{
value = Camera.Parameters.FLASH_MODE_TORCH;
}
else // we are being asked to turn it off
{
value = Camera.Parameters.FLASH_MODE_AUTO;
}
try{
params.setFlashMode(value);
mCamera.setParameters(params);
String nowMode = mCamera.getParameters().getFlashMode();
if (isOn)
{
nowMode.equals(Camera.Parameters.FLASH_MODE_TORCH);
}
if (!isOn)
{
nowMode.equals(Camera.Parameters.FLASH_MODE_AUTO);
}
}
catch (Exception ex)
{
}
}
}
但我得到了以下异常 03-10 18:47:34.907:ERROR / QualcommCameraHardware(1280):此传感器不支持参数AntiBanding
答案 0 :(得分:1)
您可以使用Camera.Parameters.setFlashMode
执行此操作。请参阅:http://developer.android.com/reference/android/hardware/Camera.Parameters.html
答案 1 :(得分:0)
有可能。首先你必须得到硬件相机的属性。使用下面的方法。
String flattenString;
camera = Camera.open();
Camera.Parameters param = camera.getParameters();
flattenString = param.flatten();
其中flatten可以给你一个带键值对的参数字符串。 你必须把它拆分为","并找到闪存模式键及其值 然后在下面的方法
中应用此参数Camera.Parameters parameters = mCamera.getParameters();
parameters.set("Key", value);
你的密钥是" flash-mode" 和价值是"开"
然后将此参数添加到setParameters方法并启动相机预览
mCamera.setParameters(parameters);
mCamera.startPreview();
您的闪光灯现已开启。