/* * Copyright (C) 2014 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.processing; import android.content.Context; import android.location.Location; import com.android.camera.app.CameraServices; import com.android.camera.session.CaptureSession; /** * An interface for tasks to be processed by a {@code ProcessingService}. */ public interface ProcessingTask { /** * The result returned by a {@code ProcessingTask}. */ public class ProcessingResult { public final boolean mSuccess; public final CaptureSession mSession; /** * @param success whether the processing was successful. * @param session the capture session for the processed task. */ public ProcessingResult(boolean success, CaptureSession session) { mSuccess = success; mSession = session; } } /** * Classes implementing this interface can be informed when a task is done * processing. */ public interface ProcessingTaskDoneListener { /** * Called when a task is done processing. * * @param result the processing result. */ public void onDone(ProcessingResult result); } /** * Processes the given task. This will be usually called by a service. * * @param context the caller {@code Context} * @param services the available {@code CameraServices} * @param session the {@code CaptureSession} * @return the {@code ProcessResult} with the result of the processing */ public ProcessingResult process(Context context, CameraServices services, CaptureSession session); /** * Suspend the task whenever possible. There is no guarantee that the task * will pause right away or at all. */ public void suspend(); /** * Resume the task if it has been suspended before. */ public void resume(); /** * @return the name of the task. It can be null to indicate that the task * has no name. */ public String getName(); /** * @return The location of the media that is to be processed. Returns null, * if no location is available. */ public Location getLocation(); /** * @return The CaptureSession if it has been created, or null. */ public CaptureSession getSession(); /** Sets a listener that is informed when this task is done processing. */ public void setDoneListener(ProcessingTaskDoneListener listener); }