From 6798c34ddb5248f038f351674c6a6c7a20992c8c Mon Sep 17 00:00:00 2001 From: Angus Kong Date: Tue, 16 Jul 2013 15:14:58 -0700 Subject: Add stitching manager in Camera. Change-Id: I2f27c2c0e77ed3d618df890e709ca09076591f70 --- src/com/android/camera/CameraActivity.java | 27 +++++++++++- src/com/android/camera/ImageTaskManager.java | 48 ++++++++++++++++++++++ .../android/camera/PanoramaStitchingManager.java | 41 ++++++++++++++++++ 3 files changed, 115 insertions(+), 1 deletion(-) create mode 100644 src/com/android/camera/ImageTaskManager.java create mode 100644 src_pd/com/android/camera/PanoramaStitchingManager.java diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java index 07cb6ced7..2ef71ed06 100644 --- a/src/com/android/camera/CameraActivity.java +++ b/src/com/android/camera/CameraActivity.java @@ -68,6 +68,7 @@ public class CameraActivity extends Activity public static final String SECURE_CAMERA_EXTRA = "secure_camera"; private CameraDataAdapter mDataAdapter; + private PanoramaStitchingManager mPanoramaManager; private int mCurrentModuleIndex; private CameraModule mCurrentModule; private View mRootView; @@ -149,6 +150,22 @@ public class CameraActivity extends Activity } }; + private ImageTaskManager.TaskListener mStitchingListener = + new ImageTaskManager.TaskListener() { + @Override + public void onTaskQueued(String filePath, Uri imageUri) { + } + + @Override + public void onTaskDone(String filePath, Uri imageUri) { + } + + @Override + public void onTaskProgress( + String filePath, Uri imageUri, int progress) { + } + }; + public MediaSaveService getMediaSaveService() { return mMediaSaveService; } @@ -219,6 +236,8 @@ public class CameraActivity extends Activity IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF); registerReceiver(mScreenOffReceiver, filter); } + mPanoramaManager = new PanoramaStitchingManager(CameraActivity.this); + mPanoramaManager.addTaskListener(mStitchingListener); LayoutInflater inflater = getLayoutInflater(); View rootLayout = inflater.inflate(R.layout.camera, null, false); mRootView = rootLayout.findViewById(R.id.camera_app_root); @@ -277,6 +296,13 @@ public class CameraActivity extends Activity super.onResume(); mCurrentModule.onResumeAfterSuper(); + setSwipingEnabled(true); + } + + @Override + public void onStart() { + super.onStart(); + // The loading is done in background and will update the filmstrip later. if (!mSecureCamera) { mDataAdapter.requestLoad(getContentResolver()); @@ -293,7 +319,6 @@ public class CameraActivity extends Activity v.getDrawable().getIntrinsicHeight(), 0, 0)); } - setSwipingEnabled(true); } @Override diff --git a/src/com/android/camera/ImageTaskManager.java b/src/com/android/camera/ImageTaskManager.java new file mode 100644 index 000000000..1324942fd --- /dev/null +++ b/src/com/android/camera/ImageTaskManager.java @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2013 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; + +import android.net.Uri; + +/** + * The interface for background image processing task manager. + */ +interface ImageTaskManager { + + /** + * Callback interface for task events. + */ + public interface TaskListener { + public void onTaskQueued(String filePath, Uri imageUri); + public void onTaskDone(String filePath, Uri imageUri); + public void onTaskProgress( + String filePath, Uri imageUri, int progress); + } + + public void addTaskListener(TaskListener l); + + public void removeTaskListener(TaskListener l); + + /** + * Get task progress by Uri. + * + * @param uri The Uri of the final image file to identify the task. + * @return Integer from 0 to 100, or -1. The percentage of the task done + * so far. -1 means not found. + */ + public int getTaskProgress(Uri uri); +} diff --git a/src_pd/com/android/camera/PanoramaStitchingManager.java b/src_pd/com/android/camera/PanoramaStitchingManager.java new file mode 100644 index 000000000..5ba16b863 --- /dev/null +++ b/src_pd/com/android/camera/PanoramaStitchingManager.java @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2013 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; + +import android.content.Context; +import android.net.Uri; + +class PanoramaStitchingManager implements ImageTaskManager { + + public PanoramaStitchingManager(Context ctx) { + } + + @Override + public void addTaskListener(TaskListener l) { + // do nothing. + } + + @Override + public void removeTaskListener(TaskListener l) { + // do nothing. + } + + @Override + public int getTaskProgress(Uri uri) { + return -1; + } +} -- cgit v1.2.3