15fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu/*
25fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu * Copyright (C) 2015 The Android Open Source Project
35fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu *
45fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu * Licensed under the Apache License, Version 2.0 (the "License");
55fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu * you may not use this file except in compliance with the License.
65fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu * You may obtain a copy of the License at
75fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu *
85fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu *      http://www.apache.org/licenses/LICENSE-2.0
95fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu *
105fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu * Unless required by applicable law or agreed to in writing, software
115fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu * distributed under the License is distributed on an "AS IS" BASIS,
125fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu * See the License for the specific language governing permissions and
145fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu * limitations under the License.
155fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu */
165fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu
175fb629902527b7c688358ece3ef1f181322fc2abSenpo Hupackage com.android.camera.session;
185fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu
195fb629902527b7c688358ece3ef1f181322fc2abSenpo Huimport android.location.Location;
205fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu
21f0ff1a9aa44d04f680af7cec8b97c3b01d3e76bdSascha Haeberlingimport com.android.camera.app.MediaSaver;
22f0ff1a9aa44d04f680af7cec8b97c3b01d3e76bdSascha Haeberling
235fb629902527b7c688358ece3ef1f181322fc2abSenpo Hupublic class CaptureSessionFactoryImpl implements CaptureSessionFactory {
245fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu    /** Sub-directory for storing temporary session files. */
255fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu    private static final String TEMP_SESSIONS = "TEMP_SESSIONS";
265fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu
275fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu    private final MediaSaver mMediaSaver;
285fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu    private final PlaceholderManager mPlaceholderManager;
295fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu    private final SessionStorageManager mSessionStorageManager;
305fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu    private final StackSaverFactory mStackSaverFactory;
315fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu
325fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu    public CaptureSessionFactoryImpl(MediaSaver mediaSaver, PlaceholderManager placeholderManager,
335fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu            SessionStorageManager sessionStorageManager, StackSaverFactory stackSaverFactory) {
345fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu        mMediaSaver = mediaSaver;
355fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu        mPlaceholderManager = placeholderManager;
365fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu        mSessionStorageManager = sessionStorageManager;
375fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu        mStackSaverFactory = stackSaverFactory;
385fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu    }
395fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu
405fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu    @Override
41f0ff1a9aa44d04f680af7cec8b97c3b01d3e76bdSascha Haeberling    public CaptureSession createNewSession(CaptureSessionManager sessionManager,
42f0ff1a9aa44d04f680af7cec8b97c3b01d3e76bdSascha Haeberling            SessionNotifier sessionNotifier, String title, long sessionStartTime,
43f0ff1a9aa44d04f680af7cec8b97c3b01d3e76bdSascha Haeberling            Location location) {
445fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu        TemporarySessionFile temporarySessionFile = new TemporarySessionFile(
455fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu                mSessionStorageManager, TEMP_SESSIONS, title);
465fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu        return new CaptureSessionImpl(title, sessionStartTime, location, temporarySessionFile,
47f0ff1a9aa44d04f680af7cec8b97c3b01d3e76bdSascha Haeberling                sessionManager, sessionNotifier, mPlaceholderManager, mMediaSaver,
485fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu                mStackSaverFactory.create(title, location));
495fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu    }
505fb629902527b7c688358ece3ef1f181322fc2abSenpo Hu}
51