我正在使用CWAC-Camera库将自定义摄像头集成到我的应用程序中。
它工作正常,因为预期的所有设备,我有,除了在摩托罗拉E
当我使用上述设备捕获单镜头图像时,我没有得到所需大小的输出图像。
当我去拍摄单幅图像时,getLargestPictureSize(CameraUtils)方法返回相机支持的最大尺寸,如1944*2592(h*w)和拍摄前相同的相机参数集,但输出文件是用1280*720(h*w)生成的。
有人能指导我解决可能的问题吗?
getLargestPictureSize方法
public static Camera.Size getLargestPictureSize(CameraHost host,
Camera.Parameters parameters,
boolean enforceProfile) {
Camera.Size result=null;
for (Camera.Size size : parameters.getSupportedPictureSizes()) {
// android.util.Log.d("CWAC-Camera",
// String.format("%d x %d", size.width, size.height));
if (!enforceProfile
|| (size.height <= host.getDeviceProfile()
.getMaxPictureHeight() && size.height >= host.getDeviceProfile()
.getMinPictureHeight())) {
if (result == null) {
result=size;
}
else {
int resultArea=result.width * result.height;
int newArea=size.width * size.height;
if (newArea > resultArea) {
result=size;
}
}
}
}
if (result == null && enforceProfile) {
result=getLargestPictureSize(host, parameters, false);
}
return(result);
}
捕获方法
public void takePicture(final PictureTransaction xact) {
if (inPreview) {
if (isAutoFocusing) {
throw new IllegalStateException(
"Camera cannot take a picture while auto-focusing");
}
else {
previewParams=camera.getParameters();
Camera.Parameters pictureParams=camera.getParameters();
Camera.Size pictureSize=
xact.host.getPictureSize(xact, pictureParams);
pictureParams.setPictureSize(pictureSize.width,
pictureSize.height);
pictureParams.setPictureFormat(ImageFormat.JPEG);
// pictureParams.setColorEffect(Parameters.EFFECT_MONO);
if (xact.flashMode != null) {
pictureParams.setFlashMode(xact.flashMode);
}
if (!onOrientationChange.isEnabled()) {
setCameraPictureOrientation(pictureParams);
}
camera.setParameters(xact.host.adjustPictureParameters(xact,
pictureParams));
xact.cameraView=this;
camera.autoFocus(new AutoFocusCallback() {
@Override
public void onAutoFocus(boolean success, final Camera camera) {
postDelayed(new Runnable() {
@Override
public void run() {
try {
camera.takePicture(
xact,
null,
new PictureTransactionCallback(xact));
} catch (Exception e) {
android.util.Log.e(getClass()
.getSimpleName(),
"Exception taking a picture", e);
// TODO get this out to library clients
}
}
}, xact.host.getDeviceProfile().getPictureDelay());
}
});
inPreview=false;
}
}
else {
throw new IllegalStateException(
"Preview mode must have started before you can take a picture");
}
}
我可以重现您的问题。大多数尺寸请求都被忽略了。我猜这个设备和其他一些设备一样,不喜欢我动态更改相机参数。我将用一个新的库替换CWAC-Camera,它将停止这样做,并添加对Android 5.0的android.hardware.camera2
API的支持。希望这个问题能在那个时候得到解决。
我已经在现有库上提交了一个问题,所以我知道要专门处理这个场景。
构建问题我的android应用程序找不到依赖项,不确定是什么问题。它昨天工作,没有更改任何代码。 有人知道怎么解决这个问题吗?
我已经和https://github.com/commonsguy/cwac-camera 创建了我的自定义CameraFragment和自定义CameraHost。 我已经重写了getPictureSize和getPreviewSize。通过这两种方法,我能够找出可以使用的大小。我的总体想法是拍摄一幅方形图像,并在拍摄前预览它。 我一直在测试,没有设备返回正方形格式的大小,所以我想最好的方法是选
在为inApp相机实施camera2 API后,我注意到在三星设备上图像显得模糊。搜索之后,我找到了Sasmung Camera SDK(http://developer.samsung.com/galaxy#camera)。因此,在三星Galaxy S7上实施SDK后,图像现在很好,但在Galaxy S6上它们仍然模糊不清。有人在三星设备上遇到过这些问题吗? 编辑:补充@rcsumners的评论
正常的摄像头一般使用独立组件或者 rtsp 组件即可接入 Home Assistant,但是小米已屏蔽其下所有摄像头设备中 rtsp 的开放接口。因此将小米生态链所产摄像头接入 HA,均需要 hack 系统固件。 小蚁摄像头 Hack 详细说明请参考 Hack 项目地址,此处做简单翻译整理。 从 此处 获取对应设备固件 型号 rootfs 分区版本 home 分区版本 Remarks Yi Hom
我在为三星S21设计的应用程序中使用了Camera2 Api。这款手机有3个后置摄像头和一个前置摄像头。我试图选择使用的物理摄像机,但是函数getPhysicalCameraIds()总是返回一个空数组。是否有其他方法获取PhysicalCameraIds或指定要使用的摄像机??有人能解释一下吗?