1bb5cb5fa3d9e4ac18f4b4c9adaf237b804a09c56Paul Rohde/*
2bb5cb5fa3d9e4ac18f4b4c9adaf237b804a09c56Paul Rohde * Copyright (C) 2015 The Android Open Source Project
3bb5cb5fa3d9e4ac18f4b4c9adaf237b804a09c56Paul Rohde *
4bb5cb5fa3d9e4ac18f4b4c9adaf237b804a09c56Paul Rohde * Licensed under the Apache License, Version 2.0 (the "License");
5bb5cb5fa3d9e4ac18f4b4c9adaf237b804a09c56Paul Rohde * you may not use this file except in compliance with the License.
6bb5cb5fa3d9e4ac18f4b4c9adaf237b804a09c56Paul Rohde * You may obtain a copy of the License at
7bb5cb5fa3d9e4ac18f4b4c9adaf237b804a09c56Paul Rohde *
8bb5cb5fa3d9e4ac18f4b4c9adaf237b804a09c56Paul Rohde *      http://www.apache.org/licenses/LICENSE-2.0
9bb5cb5fa3d9e4ac18f4b4c9adaf237b804a09c56Paul Rohde *
10bb5cb5fa3d9e4ac18f4b4c9adaf237b804a09c56Paul Rohde * Unless required by applicable law or agreed to in writing, software
11bb5cb5fa3d9e4ac18f4b4c9adaf237b804a09c56Paul Rohde * distributed under the License is distributed on an "AS IS" BASIS,
12bb5cb5fa3d9e4ac18f4b4c9adaf237b804a09c56Paul Rohde * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13bb5cb5fa3d9e4ac18f4b4c9adaf237b804a09c56Paul Rohde * See the License for the specific language governing permissions and
14bb5cb5fa3d9e4ac18f4b4c9adaf237b804a09c56Paul Rohde * limitations under the License.
15bb5cb5fa3d9e4ac18f4b4c9adaf237b804a09c56Paul Rohde */
16bb5cb5fa3d9e4ac18f4b4c9adaf237b804a09c56Paul Rohde
17b6a4d96a310a1dee22ddea89b09130bcda206bb3Paul Rohdepackage com.android.camera.device;
18b6a4d96a310a1dee22ddea89b09130bcda206bb3Paul Rohde
19b6a4d96a310a1dee22ddea89b09130bcda206bb3Paul Rohde/**
20b6a4d96a310a1dee22ddea89b09130bcda206bb3Paul Rohde * Provides a set of executable actions for a given camera device key.
21b6a4d96a310a1dee22ddea89b09130bcda206bb3Paul Rohde *
22b6a4d96a310a1dee22ddea89b09130bcda206bb3Paul Rohde * In the case of Camera2 API, this is the example signature:
23b6a4d96a310a1dee22ddea89b09130bcda206bb3Paul Rohde *
24b6a4d96a310a1dee22ddea89b09130bcda206bb3Paul Rohde * <pre><code>
25b6a4d96a310a1dee22ddea89b09130bcda206bb3Paul Rohde * Provider implements CameraDeviceActionProvider<CameraDevice, String>
26b6a4d96a310a1dee22ddea89b09130bcda206bb3Paul Rohde * </code></pre>
27b6a4d96a310a1dee22ddea89b09130bcda206bb3Paul Rohde *
28b6a4d96a310a1dee22ddea89b09130bcda206bb3Paul Rohde * @param  The type of camera device the actions produce.
29b6a4d96a310a1dee22ddea89b09130bcda206bb3Paul Rohde */
301d84d7107686aa428ee2eeb1a8caf0ea3e43b1dfPaul Rohdepublic interface CameraDeviceActionProvider<TDevice> {
31b6a4d96a310a1dee22ddea89b09130bcda206bb3Paul Rohde
32b6a4d96a310a1dee22ddea89b09130bcda206bb3Paul Rohde    /**
33b6a4d96a310a1dee22ddea89b09130bcda206bb3Paul Rohde     * Return a new set of device and api specific actions for the given
34b6a4d96a310a1dee22ddea89b09130bcda206bb3Paul Rohde     * types.
35b6a4d96a310a1dee22ddea89b09130bcda206bb3Paul Rohde     */
361d84d7107686aa428ee2eeb1a8caf0ea3e43b1dfPaul Rohde    public SingleDeviceActions<TDevice> get(CameraDeviceKey key);
37b6a4d96a310a1dee22ddea89b09130bcda206bb3Paul Rohde}
38