1. Descripción
- Use una cámara USB. Generalmente, la cámara USB provista por el fabricante tendrá un firmware incorporado, que admite múltiples resoluciones (por lo general, puede conectarla directamente a la computadora para ver la calidad de la foto y el video), como se muestra en la figura a continuación: Puede ver en la
figura anterior. El píxel máximo admitido por esta cámara es 1.9MP (alrededor de 2 millones de píxeles), y la grabación de video máxima admite 720P. - Bajo el shell adb, también puede obtener la información de la cámara a través del comando:
rk3288:/ $ dumpsys media.camera
Camera module HAL API version: 0x1
Camera module API version: 0x1
Camera module name: RK29_ICS_CameraHal_Module
Camera module author: RockChip
Number of camera devices: 1
Number of normal camera devices: 1
Active Camera Clients:
[]
Allowed users:
0
Vendor tags left unimplemented.
Prior client events (most recent at top):
01-01 10:56:49 : DISCONNECT device 0 client for package com.android.camera3 (PID 1959)
01-01 10:56:35 : CONNECT device 0 client for package com.android.camera3 (PID 1959)
01-01 09:22:11 : DISCONNECT device 0 client for package com.android.camera3 (PID 1462)
01-01 09:21:33 : CONNECT device 0 client for package com.android.camera3 (PID 1462)
01-01 08:00:59 : DISCONNECT device 0 client for package com.android.camera3 (PID 1462)
01-01 08:00:46 : CONNECT device 0 client for package com.android.camera3 (PID 1462)
01-01 08:00:17 : DISCONNECT device 0 client for package cameraserver (PID 234)
01-01 08:00:15 : USER_SWITCH previous allowed users: , current allowed users: 0
Camera 0 information:
Facing: BACK
Orientation: 0
Resource Cost: 100
Conflicting Devices: NONE
Device version: 0x100
Camera1 API shim is using parameters:
CameraParameters::dump: mMap.size = 50
antibanding: off
antibanding-values: off,50hz,60hz,auto
exposure-compensation: 0
exposure-compensation-step: 1
focal-length: 35
focus-distances: 0.3,50,Infinity
focus-mode: fixed
focus-mode-values: fixed
horizontal-view-angle: 10
jpeg-quality: 70
jpeg-thumbnail-height: 128
jpeg-thumbnail-quality: 50
jpeg-thumbnail-size-values: 0x0,160x128
jpeg-thumbnail-width: 160
max-exposure-compensation: 3
max-num-detected-faces-hw: 2
max-num-detected-faces-sw: 0
max-num-focus-areas: 0
max-num-metering-areas: 0
max-zoom: 40
min-exposure-compensation: -3
picture-format: jpeg
picture-format-values: jpeg
picture-size: 1600x1200
picture-size-values: 640x480,320x240,160x120,352x288,176x144,1280x1024,1600x1200
preferred-preview-size-for-video:
preview-format: yuv420sp
preview-format-values: yuv420sp,yuv420p
preview-fps-range: 5000,30000
preview-fps-range-values: (5000,30000)
preview-frame-rate: 30
preview-frame-rate-values: 30,15,7
preview-size: 640x480
preview-size-values: 640x480,320x240,160x120,352x288,176x144,1280x1024,1600x1200
recording-hint: false
rk-continous-pic-num: 1
rk-previwe-h-force: 0
rk-previwe-w-force: 0
rotation: 0
vertical-view-angle: 10
video-frame-format: yuv420sp
video-size:
video-size-values:
video-snapshot-supported: true
video-stabilization-supported: false
whitebalance: auto
whitebalance-values: auto,incandescent,fluorescent,daylight,cloudy-daylight
zoom: 0
zoom-ratios: 100,105,110,115,120,125,130,135,140,145,150,155,160,165,170,175,180,185,190,195,200,205,210,215,220,225,230,235,240,
245,250,255,260,265,270,275,280,285,290,295,300,
zoom-supported: true
Device 0 is closed, no client instance
No active camera clients yet.
Camera traces (0):
No camera traces collected.
En segundo lugar, el fenómeno del problema.
Pero cuando abre la cámara en el sistema Android, a veces encontrará que los píxeles no son claros al tomar fotografías y vistas previas de video, y la resolución no alcanza lo que admite la cámara. Normalmente, la resolución de vista previa se /data/camera/media_profiles.xml ( system/etc/media_profiles_default.xml)
toma de la resolución configurada en el dispositivo.
Puede modificar los parámetros correspondientes para la verificación directa, de la siguiente manera:
adb root
adb volver a montar
adb shell
busybox vi /data/camera/media_profiles.xml (editar y modificar)
:wq (salir)
reiniciar
Tres, la solución
Si necesita especificar en el código fuente (la ruta es /hardware/rockchip/camera/CameraHal/CameraUSBAdapter.cpp
), puede modificarlo de la siguiente manera:
- Al tomar fotografías, modifique la resolución de vista previa PreviewSize predeterminada y el tamaño de foto de PictureSize, personalice la resolución de vista previa usted mismo y configure 1600x1200 como la resolución máxima.
diff --git a/hardware/rockchip/camera/CameraHal/CameraUSBAdapter.cpp b/hardware/rockchip/camera/CameraHal/CameraUSBAdapter.cpp
index b565930a68..83a4888fa6 100755
--- a/hardware/rockchip/camera/CameraHal/CameraUSBAdapter.cpp
+++ b/hardware/rockchip/camera/CameraHal/CameraUSBAdapter.cpp
@@ -164,14 +164,14 @@ void CameraUSBAdapter::initDefaultParameters(int camFd)
params.set(KEY_PREVIEW_W_FORCE,"0");
params.set(KEY_PREVIEW_H_FORCE,"0");
- params.set(CameraParameters::KEY_SUPPORTED_PREVIEW_SIZES, parameterString.string());
- if(parameterString.contains("640x480"))
- params.setPreviewSize(640,480);
+ params.set(CameraParameters::KEY_SUPPORTED_PREVIEW_SIZES, "640x480,320x240,160x120,352x288,176x144,1280x1024,1600x1200");
+ if(parameterString.contains("1600x1200"))//如果1600x1200有包含在支持分辨率KEY_SUPPORTED_PREVIEW_SIZES中为真,setPreviewSize为1600x1200;
+ params.setPreviewSize(1600,1200);
else
params.setPreviewSize(mCamDriverFrmWidthMax,mCamDriverFrmHeightMax);
/*picture size setting*/
- params.set(CameraParameters::KEY_SUPPORTED_PICTURE_SIZES, parameterString.string());
- params.setPictureSize(mCamDriverFrmWidthMax, mCamDriverFrmHeightMax);
+ params.set(CameraParameters::KEY_SUPPORTED_PICTURE_SIZES, "640x480,320x240,160x120,352x288,176x144,1280x1024,1600x1200");
+ params.setPictureSize(1600,1200);
/* set framerate */
struct v4l2_streamparm setfps;
- Al grabar, configure los KEY_SUPPORTED_VIDEO_SIZES predeterminados y configure 1600x1200 como la resolución máxima de vista previa.
KEY_PREFERRED_PREVIEW_SIZE_FOR_VIDEO: establezca el tamaño de vista previa preferido al grabar video
KEY_VIDEO_SIZE: establezca el tamaño de video de la cámara
KEY_SUPPORTED_VIDEO_SIZES: obtenga una lista de tamaños de video admitidos por la cámara
diff --git a/hardware/rockchip/camera/CameraHal/CameraUSBAdapter.cpp b/hardware/rockchip/camera/CameraHal/CameraUSBAdapter.cpp
index b565930a68..153d88407f 100755
--- a/hardware/rockchip/camera/CameraHal/CameraUSBAdapter.cpp
+++ b/hardware/rockchip/camera/CameraHal/CameraUSBAdapter.cpp
@@ -571,15 +571,15 @@ void CameraUSBAdapter::initDefaultParameters(int camFd)
#if (CONFIG_CAMERA_SETVIDEOSIZE == 0)
if(false/*mIsCtsTest*/){
if(gCamInfos[mCamId].facing_info.facing == CAMERA_FACING_BACK){
- //back camera, may need to manually modify based on media_profiles.xml supported.
- params.set(CameraParameters::KEY_PREFERRED_PREVIEW_SIZE_FOR_VIDEO,"1920x1080");
- params.set(CameraParameters::KEY_VIDEO_SIZE,"1920x1080");
- params.set(CameraParameters::KEY_SUPPORTED_VIDEO_SIZES,"176x144,320x240,352x288,640x480,1280x720,1920x1080");
+ //back camera(后置), may need to manually modify based on media_profiles.xml supported.
+ params.set(CameraParameters::KEY_PREFERRED_PREVIEW_SIZE_FOR_VIDEO,"1600x1200");
+ params.set(CameraParameters::KEY_VIDEO_SIZE,"1600x1200");
+ params.set(CameraParameters::KEY_SUPPORTED_VIDEO_SIZES,"1600x1200");
}else{
- //front camera
- params.set(CameraParameters::KEY_PREFERRED_PREVIEW_SIZE_FOR_VIDEO,"640x480");
- params.set(CameraParameters::KEY_VIDEO_SIZE,"640x480");
- params.set(CameraParameters::KEY_SUPPORTED_VIDEO_SIZES,"176x144,320x240,352x288,640x480,1280x720");
+ //front camera(前置)
+ params.set(CameraParameters::KEY_PREFERRED_PREVIEW_SIZE_FOR_VIDEO,"1600x1200");
+ params.set(CameraParameters::KEY_VIDEO_SIZE,"1600x1200");
+ params.set(CameraParameters::KEY_SUPPORTED_VIDEO_SIZES,"1600x1200");
}
} else {
params.set(CameraParameters::KEY_PREFERRED_PREVIEW_SIZE_FOR_VIDEO,"");
El método anterior es el método para establecer la resolución de vista previa en 1600 x 1200. Si desea cambiar otras resoluciones, puede modificar la resolución que necesita especificar a través del método anterior; Nota: asegúrese de especificar la resolución que necesita
en las resoluciones admitidas por la cámara USB!