2 * Copyright (C) 2014 The Android Open Source Project
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package com.android.camera.debug;
19 import android.graphics.SurfaceTexture;
20 import android.hardware.Camera;
21 import android.os.Handler;
22 import android.view.SurfaceHolder;
24 import com.android.ex.camera2.portability.CameraAgent;
25 import com.android.ex.camera2.portability.CameraCapabilities;
26 import com.android.ex.camera2.portability.CameraDeviceInfo;
27 import com.android.ex.camera2.portability.CameraSettings;
28 import com.android.ex.camera2.portability.CameraStateHolder;
29 import com.android.ex.camera2.portability.DispatchThread;
32 * A {@link com.android.ex.camera2.portability.CameraAgent.CameraProxy} which wraps the
33 * other and adds logs for all operations.
35 public class DebugCameraProxy extends CameraAgent.CameraProxy {
36 private final Log.Tag mTag;
37 private final CameraAgent.CameraProxy mProxy;
42 * @param tag The tag to be used for logs.
43 * @param proxy The camera proxy to be wrapped.
45 public DebugCameraProxy(Log.Tag tag, CameraAgent.CameraProxy proxy) {
51 public Camera getCamera() {
53 return mProxy.getCamera();
57 public int getCameraId() {
58 log("getCameraId: " + mProxy.getCameraId());
59 return mProxy.getCameraId();
63 public CameraDeviceInfo.Characteristics getCharacteristics() {
64 log("getCharacteristics");
65 return mProxy.getCharacteristics();
69 public CameraAgent getAgent() {
71 return mProxy.getAgent();
75 public CameraCapabilities getCapabilities() {
76 log("getCapabilities");
77 return mProxy.getCapabilities();
81 public void reconnect(Handler handler, CameraAgent.CameraOpenCallback cb) {
83 mProxy.reconnect(handler, cb);
87 public void unlock() {
99 public void setPreviewTexture(SurfaceTexture surfaceTexture) {
100 log("setPreviewTexture");
101 mProxy.setPreviewTexture(surfaceTexture);
105 public void setPreviewTextureSync(SurfaceTexture surfaceTexture) {
106 log("setPreviewTextureSync");
107 mProxy.setPreviewTextureSync(surfaceTexture);
111 public void setPreviewDisplay(SurfaceHolder surfaceHolder) {
112 log("setPreviewDisplay");
113 mProxy.setPreviewDisplay(surfaceHolder);
117 public void startPreview() {
119 mProxy.startPreview();
123 public void startPreviewWithCallback(Handler h, CameraAgent.CameraStartPreviewCallback cb) {
124 log("startPreviewWithCallback");
125 mProxy.startPreviewWithCallback(h, cb);
129 public void stopPreview() {
131 mProxy.stopPreview();
135 public void setPreviewDataCallback(Handler handler,
136 CameraAgent.CameraPreviewDataCallback cb) {
137 log("setPreviewDataCallback");
138 mProxy.setPreviewDataCallback(handler, cb);
142 public void setOneShotPreviewCallback(Handler handler,
143 CameraAgent.CameraPreviewDataCallback cb) {
144 log("setOneShotPreviewCallback");
145 mProxy.setOneShotPreviewCallback(handler, cb);
149 public void setPreviewDataCallbackWithBuffer(Handler handler,
150 CameraAgent.CameraPreviewDataCallback cb) {
151 log("setPreviewDataCallbackWithBuffer");
152 mProxy.setPreviewDataCallbackWithBuffer(handler, cb);
156 public void addCallbackBuffer(byte[] callbackBuffer) {
157 log("addCallbackBuffer");
158 mProxy.addCallbackBuffer(callbackBuffer);
162 public void autoFocus(Handler handler, CameraAgent.CameraAFCallback cb) {
164 mProxy.autoFocus(handler, cb);
168 public void cancelAutoFocus() {
169 log("cancelAutoFocus");
170 mProxy.cancelAutoFocus();
174 public void setAutoFocusMoveCallback(Handler handler, CameraAgent.CameraAFMoveCallback cb) {
175 log("setAutoFocusMoveCallback");
176 mProxy.setAutoFocusMoveCallback(handler, cb);
180 public void takePicture(Handler handler, CameraAgent.CameraShutterCallback shutter,
181 CameraAgent.CameraPictureCallback raw, CameraAgent.CameraPictureCallback postview,
182 CameraAgent.CameraPictureCallback jpeg) {
184 mProxy.takePicture(handler, shutter, raw, postview, jpeg);
188 public void setDisplayOrientation(int degrees) {
189 log("setDisplayOrientation:" + degrees);
190 mProxy.setDisplayOrientation(degrees);
194 public void setZoomChangeListener(Camera.OnZoomChangeListener listener) {
195 log("setZoomChangeListener");
196 mProxy.setZoomChangeListener(listener);
200 public void setFaceDetectionCallback(Handler handler,
201 CameraAgent.CameraFaceDetectionCallback callback) {
202 log("setFaceDetectionCallback");
203 mProxy.setFaceDetectionCallback(handler, callback);
207 public void startFaceDetection() {
208 log("startFaceDetection");
209 mProxy.startFaceDetection();
213 public void stopFaceDetection() {
214 log("stopFaceDetection");
215 mProxy.stopFaceDetection();
219 public void setParameters(Camera.Parameters params) {
220 log("setParameters");
221 mProxy.setParameters(params);
225 public Camera.Parameters getParameters() {
226 log("getParameters");
227 return mProxy.getParameters();
231 public CameraSettings getSettings() {
233 return mProxy.getSettings();
237 public boolean applySettings(final CameraSettings settings) {
238 log("applySettings");
239 return mProxy.applySettings(settings);
243 public void refreshSettings() {
244 log("refreshParameters");
245 mProxy.refreshSettings();
249 public void enableShutterSound(boolean enable) {
250 log("enableShutterSound:" + enable);
251 mProxy.enableShutterSound(enable);
255 public String dumpDeviceSettings() {
256 log("dumpDeviceSettings");
257 return mProxy.dumpDeviceSettings();
261 public Handler getCameraHandler() {
262 return mProxy.getCameraHandler();
266 public DispatchThread getDispatchThread() {
267 return mProxy.getDispatchThread();
271 public CameraStateHolder getCameraState() {
272 return mProxy.getCameraState();
275 private void log(String msg) {