안드로이드에서 camera2 특성을 사용하는 방법을 보여줄 수있는 사람들은 누구입니까? F.e. CONTROL_EFFECT_MODE_SEPIA
효과를 어떻게 사용합니까? characteristics.get(CameraCharacteristics.CONTROL_EFFECT_MODE_SEPIA)
을 사용해 보았지만 The method get(CameraCharacteristics.Key<T>) in the type CameraCharacteristics is not applicable for the arguments (int)
을 받았습니다. 감사합니다. . 첫 번째 또는 두 번째 어느 것도 나를 위해 작동하지 않았습니다. 내가 뭔가 잘못하고 있다고 확신하므로 코드를 보여주고 싶습니다. 해결책을 찾도록 도와주세요.Camera2 특성 코드 예
@Override
public void openCamera() {
CameraManager manager = (CameraManager) activity.getSystemService(Context.CAMERA_SERVICE);
Log.e(TAG, "openCamera E");
try {
String cameraId = manager.getCameraIdList()[0];
characteristics = manager.getCameraCharacteristics(cameraId);
StreamConfigurationMap map = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
mPreviewSize = map.getOutputSizes(SurfaceTexture.class)[0];
Log.e(TAG, "Preview size is: " + mPreviewSize.toString());
manager.openCamera(cameraId, mStateCallback, null);
} catch (CameraAccessException e) {
e.printStackTrace();
}
Log.e(TAG, "openCamera X");
}
public void updatePreview() {
if(null == mCameraDevice) {
Log.e(TAG, "updatePreview error, return");
}
mPreviewBuilder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_OFF);
HandlerThread thread = new HandlerThread("CameraPreview");
thread.start();
backgroundHandler = new Handler(thread.getLooper());
try {
mPreviewSession.setRepeatingRequest(mPreviewBuilder.build(), null, backgroundHandler);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
@Override
public void startPreview() {
if(null == mCameraDevice || !myTexture.isAvailable() || null == mPreviewSize) {
Log.e(TAG, "startPreview fail, return");
}
SurfaceTexture texture = myTexture.getSurfaceTexture();
if(null == texture) {
Log.e(TAG,"texture is null, return");
return;
}
texture.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight());
Surface surface = new Surface(texture);
try {
mPreviewBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
} catch (CameraAccessException e) {
e.printStackTrace();
}
mPreviewBuilder.addTarget(surface);
try {
mCameraDevice.createCaptureSession(Arrays.asList(surface), new CameraCaptureSession.StateCallback() {
@Override
public void onConfigured(CameraCaptureSession session) {
mPreviewSession = session;
updatePreview();
}
@Override
public void onConfigureFailed(CameraCaptureSession session) {
Log.e(TAG,"onConfiguration failed.");
}
}, null);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
private CameraDevice.StateCallback mStateCallback = new CameraDevice.StateCallback() {
@Override
public void onOpened(CameraDevice camera) {
Log.e(TAG, "onOpened");
mCameraDevice = camera;
startPreview();
}
@Override
public void onDisconnected(CameraDevice camera) {
Log.e(TAG, "onDisconnected");
}
@Override
public void onError(CameraDevice camera, int error) {
Log.e(TAG, "onError");
}
};
미안 얘들 아,하지만 난이 일을하고 내 게시물을 편집하고 거기에 내 코드를 추가 할 수 없었다. 그것 좀 봐주세요. 감사합니다 – user0770
위의 두 가지 방법으로 잘 작동합니다. 장치 때문에 Nexux 5 태블릿에서 작동하지 않게되었습니다. – user0770
각각의 이름을 얻을 수있는 방법이 있습니까? SEPIA와 마찬가지로 NEGATIVE도 Camera1 API에 포함되어있었습니다. –