CameraProvider.java revision 43e1813a5d4a59ef107768eb523d76ae2781cb02
120fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong/*
220fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * Copyright (C) 2013 The Android Open Source Project
320fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong *
420fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * Licensed under the Apache License, Version 2.0 (the "License");
520fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * you may not use this file except in compliance with the License.
620fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * You may obtain a copy of the License at
720fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong *
820fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong *      http://www.apache.org/licenses/LICENSE-2.0
920fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong *
1020fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * Unless required by applicable law or agreed to in writing, software
1120fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * distributed under the License is distributed on an "AS IS" BASIS,
1220fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1320fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * See the License for the specific language governing permissions and
1420fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * limitations under the License.
1520fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong */
1620fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong
1720fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kongpackage com.android.camera.app;
1820fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong
1920fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kongimport android.hardware.Camera;
20630d55ba8111357730119899565026be503264c0Erin Dahlgrenimport android.os.Handler;
21630d55ba8111357730119899565026be503264c0Erin Dahlgren
225a344964cb003525727c31d295ca3a592c245606Sol Boucherimport com.android.ex.camera2.portability.CameraAgent.CameraExceptionCallback;
2343e1813a5d4a59ef107768eb523d76ae2781cb02Sol Boucherimport com.android.ex.camera2.portability.CameraDeviceInfo.Characteristics;
2420fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong
2520fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong/**
2620fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong * An interface which defines the camera provider.
2720fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong */
2820fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kongpublic interface CameraProvider {
2920fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong
3020fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong    /**
3120fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong     * Requests the camera device. If the camera device of the same ID is
3220fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong     * already requested, then no-op here.
3320fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong     *
3420fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong     * @param id The ID of the requested camera device.
3520fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong     */
3620fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong    public void requestCamera(int id);
3720fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong
3897e282a3764215ac193726e0d259e55bf94369feAngus Kong    public boolean waitingForCamera();
3997e282a3764215ac193726e0d259e55bf94369feAngus Kong
4020fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong    /**
4120fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong     * Releases the camera device.
4220fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong     *
4320fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong     * @param id The camera ID.
4420fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong     */
4520fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong    public void releaseCamera(int id);
4620fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong
4720fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong    /**
48630d55ba8111357730119899565026be503264c0Erin Dahlgren     * Sets a callback for handling camera api runtime exceptions on
49630d55ba8111357730119899565026be503264c0Erin Dahlgren     * a handler.
50630d55ba8111357730119899565026be503264c0Erin Dahlgren     */
51630d55ba8111357730119899565026be503264c0Erin Dahlgren    public void setCameraDefaultExceptionCallback(CameraExceptionCallback callback,
52630d55ba8111357730119899565026be503264c0Erin Dahlgren            Handler handler);
53630d55ba8111357730119899565026be503264c0Erin Dahlgren
54630d55ba8111357730119899565026be503264c0Erin Dahlgren    /**
5543e1813a5d4a59ef107768eb523d76ae2781cb02Sol Boucher     * Get the {@link Characteristics} of the given camera.
5620fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong     *
5743e1813a5d4a59ef107768eb523d76ae2781cb02Sol Boucher     * @param cameraId Which camera.
5843e1813a5d4a59ef107768eb523d76ae2781cb02Sol Boucher     * @return The static characteristics of that camera.
5920fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong     */
6043e1813a5d4a59ef107768eb523d76ae2781cb02Sol Boucher    public Characteristics getCharacteristics(int cameraId);
6120fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong
6220fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong    /**
636190c36db653e848f29d1caefc4fa1bb61e8a662Erin Dahlgren     * @returns The current camera id.
646190c36db653e848f29d1caefc4fa1bb61e8a662Erin Dahlgren     */
656190c36db653e848f29d1caefc4fa1bb61e8a662Erin Dahlgren    public int getCurrentCameraId();
666190c36db653e848f29d1caefc4fa1bb61e8a662Erin Dahlgren
676190c36db653e848f29d1caefc4fa1bb61e8a662Erin Dahlgren    /**
6820fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong     * Returns the total number of cameras available on the device.
6920fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong     */
7020fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong    public int getNumberOfCameras();
7120fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong
7220fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong    /**
7318500a493634b593dc8ba1e74b46d1f10bb6d031Angus Kong     * @returns The lowest ID of the back camera or -1 if not available.
7420fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong     */
7520fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong    public int getFirstBackCameraId();
7620fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong
7720fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong    /**
7818500a493634b593dc8ba1e74b46d1f10bb6d031Angus Kong     * @return The lowest ID of the front camera or -1 if not available.
7920fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong     */
8020fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong    public int getFirstFrontCameraId();
8139b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong
8239b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong    /**
8339b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong     * @returns Whether the camera is facing front.
8439b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong     */
8539b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong    public boolean isFrontFacingCamera(int id);
8639b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong
8739b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong    /**
8839b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong     * @returns Whether the camera is facing back.
8939b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong     */
9039b460b805adaa54f310d8637868b3a5c792b2f5Angus Kong    public boolean isBackFacingCamera(int id);
9120fad249cbb587b8cf03e8e53bc64ff8e0bec7fdAngus Kong}
92