OSDN Git Service

588b7d434434bdff3c56f419856749664a765dfb
[android-x86/packages-apps-Camera2.git] / src / com / android / camera / captureintent / resource / ResourceConstructedImpl.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.resource;
18
19 import android.content.Context;
20 import android.content.Intent;
21 import android.os.Handler;
22 import android.os.HandlerThread;
23
24 import com.android.camera.FatalErrorHandler;
25 import com.android.camera.SoundPlayer;
26 import com.android.camera.app.AppController;
27 import com.android.camera.app.LocationManager;
28 import com.android.camera.app.OrientationManager;
29 import com.android.camera.async.MainThread;
30 import com.android.camera.async.RefCountBase;
31 import com.android.camera.burst.BurstFacade;
32 import com.android.camera.captureintent.CaptureIntentModuleUI;
33 import com.android.camera.one.OneCameraManager;
34 import com.android.camera.one.OneCameraOpener;
35 import com.android.camera.settings.CameraFacingSetting;
36 import com.android.camera.settings.ResolutionSetting;
37 import com.android.camera.settings.SettingsManager;
38
39 public final class ResourceConstructedImpl implements ResourceConstructed {
40     private final Intent mIntent;
41     private final CaptureIntentModuleUI mModuleUI;
42     private final String mSettingScopeNamespace;
43     private final MainThread mMainThread;
44     private final Context mContext;
45     private final OneCameraOpener mOneCameraOpener;
46     private final OneCameraManager mOneCameraManager;
47     private final LocationManager mLocationManager;
48     private final OrientationManager mOrientationManager;
49     private final SettingsManager mSettingsManager;
50     private final BurstFacade mBurstFacade;
51     private final CameraFacingSetting mCameraFacingSetting;
52     private final ResolutionSetting mResolutionSetting;
53     private final HandlerThread mCameraThread;
54     private final Handler mCameraHandler;
55     private final FatalErrorHandler mFatalErrorHandler;
56     private final SoundPlayer mSoundPlayer;
57
58     // TODO: Hope one day we could get rid of AppController.
59     private final AppController mAppController;
60
61     /**
62      * Creates a reference counted {@link ResourceConstructedImpl} object.
63      */
64     public static RefCountBase<ResourceConstructed> create(
65             Intent intent,
66             CaptureIntentModuleUI moduleUI,
67             String settingScopeNamespace,
68             MainThread mainThread,
69             Context context,
70             OneCameraOpener oneCameraOpener,
71             OneCameraManager oneCameraManager,
72             LocationManager locationManager,
73             OrientationManager orientationManager,
74             SettingsManager settingsManager,
75             BurstFacade burstFacade,
76             AppController appController,
77             FatalErrorHandler fatalErrorHandler) {
78         final CameraFacingSetting cameraFacingSetting = new CameraFacingSetting(
79                 context.getResources(), settingsManager, settingScopeNamespace);
80         final ResolutionSetting resolutionSetting = new ResolutionSetting(
81                 settingsManager, oneCameraManager, context.getContentResolver());
82         return new RefCountBase<ResourceConstructed>(new ResourceConstructedImpl(
83                 intent, moduleUI, settingScopeNamespace, mainThread, context, oneCameraOpener,
84                 oneCameraManager, locationManager, orientationManager, settingsManager, burstFacade,
85                 cameraFacingSetting, resolutionSetting, appController, fatalErrorHandler));
86     }
87
88     private ResourceConstructedImpl(
89             Intent intent,
90             CaptureIntentModuleUI moduleUI,
91             String settingScopeNamespace,
92             MainThread mainThread,
93             Context context,
94             OneCameraOpener cameraManager,
95             OneCameraManager hardwareManager,
96             LocationManager locationManager,
97             OrientationManager orientationManager,
98             SettingsManager settingsManager,
99             BurstFacade burstFacade,
100             CameraFacingSetting cameraFacingSetting,
101             ResolutionSetting resolutionSetting,
102             AppController appController,
103             FatalErrorHandler fatalErrorHandler) {
104         mIntent = intent;
105         mModuleUI = moduleUI;
106         mSettingScopeNamespace = settingScopeNamespace;
107         mMainThread = mainThread;
108         mContext = context;
109         mOneCameraOpener = cameraManager;
110         mOneCameraManager = hardwareManager;
111         mLocationManager = locationManager;
112         mOrientationManager = orientationManager;
113         mSettingsManager = settingsManager;
114         mBurstFacade = burstFacade;
115         mCameraFacingSetting = cameraFacingSetting;
116         mResolutionSetting = resolutionSetting;
117         mFatalErrorHandler = fatalErrorHandler;
118         mSoundPlayer = new SoundPlayer(mContext);
119         mAppController = appController;
120
121         mCameraThread = new HandlerThread("ImageCaptureIntentModule.CameraHandler");
122         mCameraThread.start();
123         mCameraHandler = new Handler(mCameraThread.getLooper());
124     }
125
126     @Override
127     public void close() {
128         mCameraThread.quit();
129     }
130
131     @Override
132     public Intent getIntent() {
133         return mIntent;
134     }
135
136     @Override
137     public CaptureIntentModuleUI getModuleUI() {
138         return mModuleUI;
139     }
140
141     @Override
142     public String getSettingScopeNamespace() {
143         return mSettingScopeNamespace;
144     }
145
146     @Override
147     public MainThread getMainThread() {
148         return mMainThread;
149     }
150
151     @Override
152     public Context getContext() {
153         return mContext;
154     }
155
156     @Override
157     public OneCameraManager getOneCameraManager() {
158         return mOneCameraManager;
159     }
160
161     @Override
162     public OneCameraOpener getOneCameraOpener() {
163         return mOneCameraOpener;
164     }
165
166     @Override
167     public LocationManager getLocationManager() {
168         return mLocationManager;
169     }
170
171     @Override
172     public OrientationManager getOrientationManager() {
173         return mOrientationManager;
174     }
175
176     @Override
177     public SettingsManager getSettingsManager() {
178         return mSettingsManager;
179     }
180
181     @Override
182     public BurstFacade getBurstFacade() {
183         return mBurstFacade;
184     }
185
186     @Override
187     public CameraFacingSetting getCameraFacingSetting() {
188         return mCameraFacingSetting;
189     }
190
191     @Override
192     public ResolutionSetting getResolutionSetting() {
193         return mResolutionSetting;
194     }
195
196     @Override
197     public Handler getCameraHandler() {
198         return mCameraHandler;
199     }
200
201     @Override
202     public SoundPlayer getSoundPlayer() {
203         return mSoundPlayer;
204     }
205
206     @Override
207     public AppController getAppController() {
208         return mAppController;
209     }
210
211     @Override
212     public FatalErrorHandler getFatalErrorHandler() {
213         return mFatalErrorHandler;
214     }
215 }