【发布时间】:2017-10-11 00:55:53
【问题描述】:
我有一个在后台拍照的服务...该服务在三种模式下工作:
- 前凸轮
- 后凸轮
- 带闪光灯的后置摄像头
前两个效果很好,但是当为相机参数启用闪光灯时,“Camera.PictureCallback”中没有返回图像... 事实上,回调从未被触发。
闪光灯闪光,一切正常,但没有收到图像。
这是我的 onStartCommand :
public int onStartCommand(Intent intent, int flags, int startId) {
try {
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_TOAST,
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
PixelFormat.TRANSLUCENT
);
params.gravity = Gravity.TOP | Gravity.START;
params.width = 1;
params.height = 1;
params.x = 0;
params.y = 0;
sv = new SurfaceView(getApplicationContext());
windowManager.addView(sv, params);
SurfaceHolder sHolder = sv.getHolder();
sHolder.addCallback(this);
} catch (Exception e) {
e.printStackTrace();
}
return START_NOT_STICKY;
}
这是我的相机初始化代码:
myCamera = Camera.open();
if (myCamera != null) {
myCamera.setPreviewDisplay(sv.getHolder());
Camera.Parameters parameters = myCamera.getParameters();
parameters.setFlashMode(FLASH_MODE_ON);
parameters.setPictureFormat(ImageFormat.JPEG);
parameters.setJpegQuality(70);
// set camera parameters
myCamera.setParameters(parameters);
myCamera.startPreview();
myCamera.setErrorCallback(errorCallBack);
myCamera.takePicture(mShutter, null, mCall);
}
【问题讨论】:
-
如果是,那么您可能需要将闪光灯模式设置为:FLASH_MODE_ON 而不是 FLASH_MODE_AUTO。
-
是的,代码被调用了...“FLASH_MODE”是一个从bundle extras中设置的变量...并且在启用flash时它被设置为“FLASH_MODE_ON”
-
我有3个案例:前置摄像头(FLASH_MODE_OFF)-主摄像头(FLASH_MODE_AUTO)-主+闪光灯(FLASH_MODE_ON)
-
该编辑没有影响您的问题吗?闪光灯还是不行?您正在使用哪种设备?
-
不,同样的问题.... 华为 m8 和其他 OEM 设备