kfi*_*fir 8 camera android android-camera2
如何从camera2 api广角相机捕捉图像或视频?还是望远镜?我知道如何处理前置和后置摄像头的摄像头捕获。我就是不明白如何打开相机并选择广角/伸缩相机?
我想这与设置以下其中一项有关:
CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
CameraCharacteristics.getPhysicalCameraIds()
CameraCharacteristics.getAvailablePhysicalCameraRequestKeys()
CameraDevice.createCaptureSession(SessionConfiguration config)
CameraCharactersitics.LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE
Run Code Online (Sandbox Code Playgroud)
但是我无法理解设置它的场景,我没有找到任何好的解释。我将感谢任何类型的教程或解释。最后一个问题 - 如何在没有物理设备的情况下对其进行测试?我的意思是 - 如何设置 Avd/模拟器?
kfi*_*fir -1
所以,如果有人仍在寻找答案:几乎没有制造商支持这一点,直到 android 10。从 android 10 - 所有物理相机都是逻辑相机。这意味着您可以看到这些摄像头
manager.getCameraIdList()
Run Code Online (Sandbox Code Playgroud)
您将获得所有可用相机的列表,只需查找 CameraCharacteristics.LENS_FACING 方向即可。并填充一个列表。
这是完整的代码:
public CameraItem[] GetCameraListFirstTime() {
List<CameraItem> listValuesItems = new ArrayList<CameraItem>();
boolean IsMain = false;
boolean IsSelfie = false;
if(manager == null)
manager = (CameraManager)mContext.getSystemService(CAMERA_SERVICE);
try {
for (String cameraId : manager.getCameraIdList()) {
CameraCharacteristics chars = manager.getCameraCharacteristics(cameraId);
if (!IsMain && chars.get(CameraCharacteristics.LENS_FACING) == Camera.CameraInfo.CAMERA_FACING_FRONT) {
listValuesItems.add(new CameraItem(Integer.parseInt(cameraId), "Main"));
IsMain = true;
}
else if (!IsSelfie && chars.get(CameraCharacteristics.LENS_FACING) == Camera.CameraInfo.CAMERA_FACING_BACK) {
listValuesItems.add(new CameraItem(Integer.parseInt(cameraId), "Selfie"));
IsSelfie = true;
}
else
listValuesItems.add(new CameraItem(Integer.parseInt(cameraId), "Wide or Other"));
}
}
catch (CameraAccessException e) {
Log.e(TAG, e.toString());
}
return listValuesItems.toArray(new CameraItem[0]);
}
public class CameraItem implements java.io.Serializable{
public int Key;
public String Description;
public CameraItem(int key, String desc)
{
Key=key;
Description = desc;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1328 次 |
| 最近记录: |