| /* |
| * Copyright (C) 2015 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.camera.app; |
| |
| import android.content.Context; |
| |
| import com.android.camera.MediaSaverImpl; |
| import com.android.camera.Storage; |
| import com.android.camera.async.MainThread; |
| import com.android.camera.remote.RemoteShutterListener; |
| import com.android.camera.session.CaptureSessionFactory; |
| import com.android.camera.session.CaptureSessionFactoryImpl; |
| import com.android.camera.session.CaptureSessionManager; |
| import com.android.camera.session.CaptureSessionManagerImpl; |
| import com.android.camera.session.PlaceholderManager; |
| import com.android.camera.session.SessionStorageManager; |
| import com.android.camera.session.SessionStorageManagerImpl; |
| import com.android.camera.session.StackSaverFactory; |
| import com.android.camera.settings.SettingsManager; |
| import com.android.camera.util.AndroidContext; |
| import com.android.camera.util.RemoteShutterHelper; |
| |
| /** |
| * Functionality available to all modules and services. |
| */ |
| public class CameraServicesImpl implements CameraServices { |
| /** |
| * Fast, thread safe singleton initialization. |
| */ |
| private static class Singleton { |
| private static final CameraServicesImpl INSTANCE = new CameraServicesImpl( |
| AndroidContext.instance().get()); |
| } |
| |
| /** |
| * @return a single instance of of the global camera services. |
| */ |
| public static CameraServicesImpl instance() { |
| return Singleton.INSTANCE; |
| } |
| |
| private final MediaSaver mMediaSaver; |
| private final CaptureSessionManager mSessionManager; |
| private final MemoryManagerImpl mMemoryManager; |
| private final RemoteShutterListener mRemoteShutterListener; |
| private final MotionManager mMotionManager; |
| private final SettingsManager mSettingsManager; |
| |
| private CameraServicesImpl(Context context) { |
| mMediaSaver = new MediaSaverImpl(context.getContentResolver()); |
| PlaceholderManager mPlaceHolderManager = new PlaceholderManager(context); |
| SessionStorageManager mSessionStorageManager = SessionStorageManagerImpl.create(context); |
| |
| StackSaverFactory mStackSaverFactory = new StackSaverFactory(Storage.DIRECTORY, |
| context.getContentResolver()); |
| CaptureSessionFactory captureSessionFactory = new CaptureSessionFactoryImpl( |
| mMediaSaver, mPlaceHolderManager, mSessionStorageManager, mStackSaverFactory); |
| mSessionManager = new CaptureSessionManagerImpl( |
| captureSessionFactory, mSessionStorageManager, MainThread.create()); |
| mMemoryManager = MemoryManagerImpl.create(context, mMediaSaver); |
| mRemoteShutterListener = RemoteShutterHelper.create(context); |
| mSettingsManager = new SettingsManager(context); |
| |
| mMotionManager = new MotionManager(context); |
| } |
| |
| @Override |
| public CaptureSessionManager getCaptureSessionManager() { |
| return mSessionManager; |
| } |
| |
| @Override |
| public MemoryManager getMemoryManager() { |
| return mMemoryManager; |
| } |
| |
| @Override |
| public MotionManager getMotionManager() { |
| return mMotionManager; |
| } |
| |
| @Override |
| @Deprecated |
| public MediaSaver getMediaSaver() { |
| return mMediaSaver; |
| } |
| |
| @Override |
| public RemoteShutterListener getRemoteShutterListener() { |
| return mRemoteShutterListener; |
| } |
| |
| @Override |
| public SettingsManager getSettingsManager() { |
| return mSettingsManager; |
| } |
| } |