13651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala/* 23651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala * Copyright (C) 2016 The Android Open Source Project 33651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala * 43651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala * Licensed under the Apache License, Version 2.0 (the "License"); 53651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala * you may not use this file except in compliance with the License. 63651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala * You may obtain a copy of the License at 73651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala * 83651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala * http://www.apache.org/licenses/LICENSE-2.0 93651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala * 103651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala * Unless required by applicable law or agreed to in writing, software 113651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala * distributed under the License is distributed on an "AS IS" BASIS, 123651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala * See the License for the specific language governing permissions and 143651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala * limitations under the License. 153651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvala */ 163651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvalapackage com.android.devcamera; 17a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala 18a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvalaimport android.util.Size; 19a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvalaimport android.view.Surface; 20a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala 21a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala/** 22a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * This is a simple camera interface not specific to API1 or API2. 23a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala */ 243651aa3f8296eae150590b765fda1d87f49fb5b6Eino-Ville Talvalapublic interface CameraInterface { 25a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala /** 26a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * Return preview size to use pass thru from camera API. 27a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala */ 28a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala Size getPreviewSize(); 29a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala 30a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala /** 319736d0f3038125c3c4b0cdeacbe18884a70805f2Eino-Ville Talvala * Get camera field of view, in degrees. Entry 0 is horizontal, entry 1 is vertical FOV. 329736d0f3038125c3c4b0cdeacbe18884a70805f2Eino-Ville Talvala */ 339736d0f3038125c3c4b0cdeacbe18884a70805f2Eino-Ville Talvala float[] getFieldOfView(); 349736d0f3038125c3c4b0cdeacbe18884a70805f2Eino-Ville Talvala 359736d0f3038125c3c4b0cdeacbe18884a70805f2Eino-Ville Talvala /** 363855bb499fbfc073771fa951babfe1922d90ffc9Eino-Ville Talvala * Get the camera sensor orientation relative to device native orientation 373855bb499fbfc073771fa951babfe1922d90ffc9Eino-Ville Talvala * Typically 90 or 270 for phones, 0 or 180 for tablets, though many tables are also 383855bb499fbfc073771fa951babfe1922d90ffc9Eino-Ville Talvala * portrait-native. 393855bb499fbfc073771fa951babfe1922d90ffc9Eino-Ville Talvala */ 403855bb499fbfc073771fa951babfe1922d90ffc9Eino-Ville Talvala int getOrientation(); 413855bb499fbfc073771fa951babfe1922d90ffc9Eino-Ville Talvala 423855bb499fbfc073771fa951babfe1922d90ffc9Eino-Ville Talvala /** 43a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * Open the camera. Call startPreview() to actually see something. 44a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala */ 45a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala void openCamera(); 46a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala 47a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala /** 48a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * Start preview to a surface. Also need to call openCamera(). 49a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * @param surface 50a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala */ 51a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala void startPreview(Surface surface); 52a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala 53a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala /** 54a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * Close the camera. 55a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala */ 56a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala void closeCamera(); 57a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala 58a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala /** 59a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * Take a picture and return data with provided callback. 60a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * Preview must be started. 61a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala */ 62a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala void takePicture(); 63a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala 64a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala /** 65a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * Set whether we are continuously taking pictures, or not. 66a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala */ 67a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala void setBurst(boolean go); 68a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala 69a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala /** 70a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * Take a picture and return data with provided callback. 71a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * Preview must be started. 72a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala */ 73a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala void setCallback(MyCameraCallback callback); 74a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala 75a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala /** 76a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * Is a raw stream available. 77a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala */ 78a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala boolean isRawAvailable(); 79a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala 80a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala /** 81a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * Is a reprocessing available. 82a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala */ 83a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala boolean isReprocessingAvailable(); 84a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala 85a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala /** 86a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * Triggers an AF scan. Leaves camera in AUTO. 87a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala */ 88a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala void triggerAFScan(); 89a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala 90a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala /** 91a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * Runs CAF (continuous picture). 92a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala */ 93a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala void setCAF(); 94a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala 95a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala /** 96a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * Camera picture callbacks. 97a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala */ 98a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala interface MyCameraCallback { 99a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala /** 100a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * What text to display on the Edge and NR mode buttons. 101a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala */ 102a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala void setNoiseEdgeText(String s1, String s2); 103a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala 104a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala /** 105a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * What text to display on the Edge and NR mode buttons (reprocessing flow). 106a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala */ 107a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala void setNoiseEdgeTextForReprocessing(String s1, String s2); 108a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala 109a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala /** 110a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * Full size JPEG is available. 111a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * @param jpegData 112a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * @param x 113a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * @param y 114a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala */ 115a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala void jpegAvailable(byte[] jpegData, int x, int y); 116a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala 117a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala /** 118a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * Metadata from an image frame. 119a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * 120a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * @param info Info string we print just under viewfinder. 121a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * 122a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * fps, mLastIso, af, ae, awb 123a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * @param faces Face coordinates. 124a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * @param normExposure Exposure value normalized from 0 to 1. 125a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * @param normLensPos Lens position value normalized from 0 to 1. 126a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * @param fps 127a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * @param iso 128a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * @param afState 129a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * @param aeState 130a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * @param awbState 131a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * 132a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala */ 133a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala void frameDataAvailable(NormalizedFace[] faces, float normExposure, float normLensPos, float fps, int iso, int afState, int aeState, int awbState); 134a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala 135a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala /** 136a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * Misc performance data. 137a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala */ 138a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala void performanceDataAvailable(Integer timeToFirstFrame, Integer halWaitTime, Float droppedFrameCount); 139a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala 140a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala /** 141a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * Called when camera2 FULL not available. 142a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala */ 143a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala void noCamera2Full(); 144a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala 145a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala /** 146a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala * Used to set the preview SurfaceView background color from black to transparent. 147a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala */ 148a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala void receivedFirstFrame(); 149a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala } 150a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala 151a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala void setCaptureFlow(Boolean yuv1, Boolean yuv2, Boolean raw10, Boolean nr, Boolean edge, Boolean face); 152a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala 153a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala void setReprocessingFlow(Boolean nr, Boolean edge); 154a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala 155a8a96dfce795a6621cdf7b890442fa5ed1252a55Eino-Ville Talvala} 156