[英]Android flash mode as torch doesnt works
我正在使用相机API和闪光灯模式作为手电筒,但在拍摄一张照片后闪光灯关闭了。如何重新打开闪光灯?我正在使用android 2.3,如何将闪光灯模式用作手电筒
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { // <15>
camera = Camera.open();
params = camera.getParameters();
List<Size> sizes = params.getSupportedPictureSizes();
Camera.Size size = sizes.get(0);
params.setFocusMode(Camera.Parameters.FOCUS_MODE_MACRO);
params.setWhiteBalance(Camera.Parameters.WHITE_BALANCE_AUTO);
params.setSceneMode(Camera.Parameters.SCENE_MODE_LANDSCAPE);
params.setFlashMode("torch");
params.setJpegThumbnailQuality(100);
params.setExposureCompensation(0);
params.setJpegQuality(100);
// params.setPreviewSize(PreviewSizeWidth,PreviewSizeHeight);
//now that you have the list of supported sizes, pick one and set it back to the parameters...
//int w=0,h=0;
for(int i=0;i<sizes.size();i++)
{
if(sizes.get(i).width > size.width)
size = sizes.get(i);
}
params.setPictureSize(size.width, size.height);
Toast.makeText(getContext(), size.width+"and"+size.height,Toast.LENGTH_SHORT).show();
camera.setParameters(params);
if (this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE)
{
params.set("orientation", "portrait");
camera.setDisplayOrientation(90);
}
camera.startPreview();
try
{
camera.setPreviewDisplay(holder);
}
catch (IOException exception)
{
camera.release();
camera = null;
}
}
}
检查一下
私人相机相机;
if (camera == null) {
} else {
// Set the torch flash mode
Parameters param = camera.getParameters();
param.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
try {
camera.setParameters(param);
camera.startPreview();
} catch (Exception e) {
}
}
拍照后您会如何处理? 您是否移至其他活动/片段,然后又回到拍照片段中? 您是否只是存储照片而不离开当前活动/片段?
如果您不离开活动/片段,建议您在上一个Camera.PictureCallback末尾尝试重新启动割炬。 请记住,拍照后相机预览将停止,因此您必须重新启动预览。 也许像这样:
mPictureCallback = new Camera.PictureCallback(){
@Override
public void onPictureTaken(byte[] data, Camera camera) {
// ... process your byte data ...
if(mCamera != null){
Camera.Parameters params = mCamera.getParameters();
params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
mCamera.setParameters(params);
try{
mCamera.startPreview();
}catch(Exception e){
e.printStackTrace();
}
}
}
};
您需要先调用mCamera.stopPreview(),然后再调用mCamera.setParameters(params); 像下面
mCamera.stopPreview();
mCamera.setParameters(cameraParameters);
mCamera.startPreview();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.