OSDN Git Service

ab18eaf444f7a4f7cf2daa1a0d3726d41a45fe95
[android-x86/packages-apps-Camera2.git] / src / com / android / camera / captureintent / CaptureIntentSession.java
1 /*
2  * Copyright (C) 2015 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 com.android.camera.captureintent;
18
19 import com.android.camera.app.MediaSaver;
20 import com.android.camera.debug.Log;
21 import com.android.camera.exif.ExifInterface;
22 import com.android.camera.session.CaptureSession;
23 import com.android.camera.session.CaptureSessionManager;
24 import com.android.camera.session.SessionNotifier;
25 import com.android.camera.session.StackSaver;
26 import com.android.camera.session.TemporarySessionFile;
27 import com.android.camera.stats.CaptureSessionStatsCollector;
28 import com.android.camera.util.Size;
29
30 import android.graphics.Bitmap;
31 import android.location.Location;
32 import android.net.Uri;
33
34 /**
35  * An implementation of {@link CaptureSession} which is used by
36  * {@link CaptureIntentModule}.
37  */
38 public class CaptureIntentSession implements CaptureSession {
39     private static final Log.Tag TAG = new Log.Tag("CapIntSession");
40
41     /** For aggregation of capture information */
42     // TODO: Implement mCaptureSessionStatsCollector.decorateAtTimeCaptureRequest call.
43     private final CaptureSessionStatsCollector mCaptureSessionStatsCollector =
44             new CaptureSessionStatsCollector();
45     /** The capture session manager responsible for this session. */
46     private final CaptureSessionManager mSessionManager;
47     /** Used to inform about session status updates. */
48     private final SessionNotifier mSessionNotifier;
49     /** The title of the item being processed. */
50     private final String mTitle;
51     /** The location this session was created at. Used for media store. */
52     private Location mLocation;
53     /** Whether one of start methods are called. */
54     private boolean isStarted;
55
56     /**
57      * Creates a new {@link CaptureSession}.
58      *
59      * @param title the title of this session.
60      * @param location the location of this session, used for media store.
61      * @param captureSessionManager the capture session manager responsible for
62      *            this session.
63      */
64     public CaptureIntentSession(String title, Location location,
65             CaptureSessionManager captureSessionManager, SessionNotifier sessionNotifier) {
66         mTitle = title;
67         mLocation = location;
68         mSessionManager = captureSessionManager;
69         mSessionNotifier = sessionNotifier;
70         isStarted = false;
71     }
72
73     @Override
74     public String getTitle() {
75         return mTitle;
76     }
77
78     @Override
79     public Location getLocation() {
80         return mLocation;
81     }
82
83     @Override
84     public void setLocation(Location location) {
85         mLocation = location;
86     }
87
88     // TODO: Support progress in the future once HDR is enabled for capture intent.
89     @Override
90     public synchronized int getProgress() {
91         return 0;
92     }
93
94     @Override
95     public synchronized void setProgress(int percent) {
96         // Do nothing.
97     }
98
99     @Override
100     public synchronized int getProgressMessageId() {
101         return -1;
102     }
103
104     @Override
105     public synchronized void setProgressMessage(int messageId) {
106     }
107
108     @Override
109     public void updateThumbnail(Bitmap bitmap) {
110         mSessionNotifier.notifySessionThumbnailAvailable(bitmap);
111     }
112
113     @Override
114     public void updateCaptureIndicatorThumbnail(Bitmap indicator, int rotationDegrees) {
115         // Do nothing
116     }
117
118     @Override
119     public synchronized void startEmpty(Size pictureSize) {
120         isStarted = true;
121     }
122
123     @Override
124     public synchronized void startSession(Bitmap placeholder, int progressMessageId) {
125         throw new RuntimeException("Not supported.");
126     }
127
128     @Override
129     public synchronized void startSession(byte[] placeholder, int progressMessageId) {
130         throw new RuntimeException("Not supported.");
131     }
132
133     @Override
134     public synchronized void startSession(Uri uri, int progressMessageId) {
135         throw new RuntimeException("Not supported.");
136     }
137
138     @Override
139     public synchronized void cancel() {
140     }
141
142     @Override
143     public synchronized void saveAndFinish(byte[] data, int width, int height, int orientation,
144             ExifInterface exif, final MediaSaver.OnMediaSavedListener listener) {
145         mSessionNotifier.notifySessionPictureDataAvailable(data, orientation);
146     }
147
148     @Override
149     public StackSaver getStackSaver() {
150         return null;
151     }
152
153     @Override
154     public void finish() {
155         // Do nothing.
156     }
157
158     @Override
159     public TemporarySessionFile getTempOutputFile() {
160         throw new RuntimeException("Not supported.");
161     }
162
163     @Override
164     public Uri getUri() {
165         throw new RuntimeException("Not supported.");
166     }
167
168     @Override
169     public void updatePreview() {
170         throw new RuntimeException("Not supported.");
171     }
172
173     @Override
174     public void finishWithFailure(int progressMessageId, boolean removeFromFilmstrip) {
175         throw new RuntimeException("Not supported.");
176     }
177
178     @Override
179     public void finalizeSession() {
180         // Do nothing.
181     }
182
183     @Override
184     public void addProgressListener(CaptureSession.ProgressListener listener) {
185         // Do nothing.
186     }
187
188     @Override
189     public void removeProgressListener(CaptureSession.ProgressListener listener) {
190         // Do nothing.
191     }
192
193     @Override
194     public CaptureSessionStatsCollector getCollector() {
195         return mCaptureSessionStatsCollector;
196     }
197
198     private boolean isStarted() {
199         return isStarted;
200     }
201 }