Home | History | Annotate | Download | only in resource
      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, appController);
     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 }
    216