Home | History | Annotate | Download | only in 2.0
      1 /*
      2  * Copyright (C) 2018 The Android Open Source Project
      3  *
      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
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     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.
     15  */
     16 
     17 package android.frameworks.cameraservice.service@2.0;
     18 
     19 import android.frameworks.cameraservice.device@2.0::CameraMetadata;
     20 import android.frameworks.cameraservice.device@2.0::ICameraDeviceUser;
     21 import android.frameworks.cameraservice.device@2.0::ICameraDeviceCallback;
     22 import android.frameworks.cameraservice.common@2.0::Status;
     23 import android.frameworks.cameraservice.common@2.0::ProviderIdAndVendorTagSections;
     24 import ICameraServiceListener;
     25 
     26 interface ICameraService {
     27     /**
     28      * connectDevice
     29      *
     30      * Return an ICameraDeviceUser interface for the requested cameraId.
     31      *
     32      * Note: The client must have camera permissions to call this method
     33      *       successfully.
     34      *
     35      * @param callback the ICameraDeviceCallback interface which will get called
     36      *        the cameraserver when capture is started, results are received
     37      *        etc.
     38      * @param cameraId the cameraId of the camera device to connect to.
     39      *
     40      * @return status Status code of the operation.
     41      * @return device ICameraDeviceUser interface to the camera device requested.
     42      */
     43     connectDevice(ICameraDeviceCallback callback, string cameraId)
     44         generates (Status status, ICameraDeviceUser device);
     45 
     46     /**
     47      * Add listener for changes to camera device status.
     48      *
     49      * Also returns the set of currently-known camera IDs and state of each
     50      * device. Adding multiple listeners must result in the callbacks defined by
     51      * ICameraServiceListener being called on all of them, on change of device
     52      * status.
     53      *
     54      * @param listener the listener interface to be added. The cameraserver will
     55      *        call callbacks on this interface when a camera device's status
     56      *        changes.
     57      * @return status Status code of the operation
     58      * @return statuses a list of CameraStatusAndIds which store the deviceIds
     59      *         and their corresponding statuses.
     60      */
     61     addListener(ICameraServiceListener listener)
     62         generates (Status status, vec<CameraStatusAndId> statuses);
     63 
     64     /**
     65      * Remove listener for changes to camera device status.
     66      *
     67      * @param listener the listener to be removed from receiving callbacks on
     68      *        changes to device state.
     69      * @return status Status code of the operation.
     70      */
     71     removeListener(ICameraServiceListener listener) generates (Status status);
     72 
     73     /**
     74      * Read the static camera metadata for a camera device.
     75      * @param cameraId the camera id of the camera device, whose metadata is
     76      *        being requested.
     77      * @return status the status code of the operation
     78      * @return metadata the static metadata of the camera device requested.
     79      */
     80     getCameraCharacteristics(string cameraId)
     81         generates (Status status, CameraMetadata metadata);
     82 
     83     /**
     84      * Read in the provider ids and corresponding vendor tag sections from the camera server.
     85      * Intended to be used by the native code of CameraMetadata to correctly
     86      * interpret camera metadata with vendor tags.
     87      *
     88      * Note: VendorTag caches may be created in process, by clients. A HIDL api
     89      *       is not provided for this.
     90      *
     91      * @return status the status code of the operation.
     92      * @return providerIdAndVendorTagSections the list of provider ids and corresponding
     93      *         vendor tag sections.
     94      */
     95     getCameraVendorTagSections()
     96         generates (Status status,
     97                    vec<ProviderIdAndVendorTagSections> providerIdAndVendorTagSections);
     98 };
     99