summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera
diff options
context:
space:
mode:
authorSascha Haeberling <haeberling@google.com>2013-09-09 14:42:43 -0700
committerSascha Haeberling <haeberling@google.com>2013-09-09 15:58:21 -0700
commitb7639c641f2ed5d0c60546349c3aa9e90c026878 (patch)
treed6b2b70ab0f099fd338168233a93fcfd314311ac /src/com/android/camera
parent08d82bae967db1cc090ab763f072e0410eb4b05e (diff)
downloadandroid_packages_apps_Snap-b7639c641f2ed5d0c60546349c3aa9e90c026878.tar.gz
android_packages_apps_Snap-b7639c641f2ed5d0c60546349c3aa9e90c026878.tar.bz2
android_packages_apps_Snap-b7639c641f2ed5d0c60546349c3aa9e90c026878.zip
Make sure we switch to preview view when resuming.
Bug: 10640328 But we need to make sure to not always switch in onResume, as some activities stared from us (like playing a video or editing) require the UI flow to stay in filmstrip. Change-Id: Id2911be4949de9fd9fc4cb3451dd34e3fae8becf
Diffstat (limited to 'src/com/android/camera')
-rw-r--r--src/com/android/camera/CameraActivity.java78
-rw-r--r--src/com/android/camera/VideoModule.java3
-rw-r--r--src/com/android/camera/data/CameraDataAdapter.java5
-rw-r--r--src/com/android/camera/data/FixedFirstDataAdapter.java7
-rw-r--r--src/com/android/camera/data/FixedLastDataAdapter.java7
-rw-r--r--src/com/android/camera/data/LocalData.java4
-rw-r--r--src/com/android/camera/data/LocalMediaData.java17
-rw-r--r--src/com/android/camera/data/SimpleViewData.java3
-rw-r--r--src/com/android/camera/ui/FilmStripView.java5
-rw-r--r--src/com/android/camera/util/CameraUtil.java33
10 files changed, 88 insertions, 74 deletions
diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java
index 4c787cc02..672801579 100644
--- a/src/com/android/camera/CameraActivity.java
+++ b/src/com/android/camera/CameraActivity.java
@@ -93,6 +93,19 @@ public class CameraActivity extends Activity
// panorama. If the extra is not set, it is in the normal camera mode.
public static final String SECURE_CAMERA_EXTRA = "secure_camera";
+ /**
+ * Request code from an activity we started that indicated that we do not
+ * want to reset the view to the preview in onResume.
+ */
+ public static final int REQ_CODE_DONT_SWITCH_TO_PREVIEW = 142;
+
+ /** Request code for external image editor activities. */
+ private static final int REQ_CODE_EDIT = 1;
+
+
+ /** Whether onResume should reset the view to the preview. */
+ private boolean mResetToPreviewOnResume = true;
+
// Supported operations at FilmStripView. Different data has different
// set of supported operations.
private static final int SUPPORT_DELETE = 1 << 0;
@@ -107,8 +120,6 @@ public class CameraActivity extends Activity
private static final int SUPPORT_SHOW_ON_MAP = 1 << 9;
private static final int SUPPORT_ALL = 0xffffffff;
- private static final int EDIT_RESULT = 1;
-
/** This data adapter is used by FilmStripView. */
private LocalDataAdapter mDataAdapter;
/** This data adapter represents the real local camera data. */
@@ -117,7 +128,6 @@ public class CameraActivity extends Activity
private PanoramaStitchingManager mPanoramaManager;
private int mCurrentModuleIndex;
private CameraModule mCurrentModule;
- private FrameLayout mLayoutRoot;
private FrameLayout mAboveFilmstripControlLayout;
private View mCameraModuleRootView;
private FilmStripView mFilmStripView;
@@ -588,7 +598,7 @@ public class CameraActivity extends Activity
intent.setData(currentData.getContentUri());
// We need the file path to wrap this into a RandomAccessFile.
intent.putExtra(MEDIA_ITEM_PATH, currentData.getPath());
- startActivity(intent);
+ startActivityForResult(intent, REQ_CODE_DONT_SWITCH_TO_PREVIEW);
return true;
}
case R.id.action_rotate_ccw:
@@ -606,8 +616,8 @@ public class CameraActivity extends Activity
localData.getMimeType())
.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.putExtra("mimeType", intent.getType());
- startActivity(Intent.createChooser(
- intent, getString(R.string.set_as)));
+ startActivityForResult(Intent.createChooser(
+ intent, getString(R.string.set_as)), REQ_CODE_DONT_SWITCH_TO_PREVIEW);
return true;
}
case R.id.action_details:
@@ -683,8 +693,6 @@ public class CameraActivity extends Activity
registerReceiver(sScreenOffReceiver, filter);
}
}
- mLayoutRoot = (FrameLayout) findViewById(R.id.camera_layout_root);
-
mAboveFilmstripControlLayout =
(FrameLayout) findViewById(R.id.camera_above_filmstrip_layout);
mAboveFilmstripControlLayout.setFitsSystemWindows(true);
@@ -788,6 +796,30 @@ public class CameraActivity extends Activity
}
@Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if (requestCode == REQ_CODE_EDIT && resultCode == RESULT_OK) {
+ Uri uri = data.getData();
+ ContentResolver contentResolver = getContentResolver();
+ if (uri == null) {
+ // If we don't have a particular uri returned, then we have
+ // to refresh all, it is not optimal, but works best so far.
+ // Also don't requestLoad() when in secure camera mode.
+ if (!mSecureCamera) {
+ mDataAdapter.requestLoad(contentResolver);
+ }
+ } else {
+ mDataAdapter.refresh(contentResolver, uri);
+ }
+ }
+
+ if (requestCode == REQ_CODE_DONT_SWITCH_TO_PREVIEW | requestCode == REQ_CODE_EDIT) {
+ mResetToPreviewOnResume = false;
+ } else {
+ super.onActivityResult(requestCode, resultCode, data);
+ }
+ }
+
+ @Override
public void onResume() {
// TODO: Handle this in OrientationManager.
if (Settings.System.getInt(getContentResolver(),
@@ -804,6 +836,15 @@ public class CameraActivity extends Activity
mCurrentModule.onResumeAfterSuper();
setSwipingEnabled(true);
+
+ if (mResetToPreviewOnResume) {
+ // Go to the preview on resume.
+ mFilmStripView.getController().goToFirstItem();
+ }
+ // Default is showing the preview, unless disabled by explicitly
+ // starting an activity we want to return from to the filmstrip rather
+ // than the preview.
+ mResetToPreviewOnResume = true;
}
@Override
@@ -991,26 +1032,7 @@ public class CameraActivity extends Activity
Intent intent = new Intent(Intent.ACTION_EDIT)
.setDataAndType(data.getContentUri(), data.getMimeType())
.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
- startActivityForResult(Intent.createChooser(intent, null), EDIT_RESULT);
- }
-
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (requestCode == EDIT_RESULT && resultCode == RESULT_OK) {
- Uri uri = data.getData();
- ContentResolver contentResolver = getContentResolver();
- if (uri == null) {
- // If we don't have a particular uri returned, then we have
- // to refresh all, it is not optimal, but works best so far.
- // Also don't requestLoad() when in secure camera mode.
- if (!mSecureCamera) {
- mDataAdapter.requestLoad(contentResolver);
- }
- } else {
- mDataAdapter.refresh(contentResolver, uri);
- }
-
- }
+ startActivityForResult(Intent.createChooser(intent, null), REQ_CODE_EDIT);
}
private void openModule(CameraModule module) {
diff --git a/src/com/android/camera/VideoModule.java b/src/com/android/camera/VideoModule.java
index 291c74cc5..89f229abd 100644
--- a/src/com/android/camera/VideoModule.java
+++ b/src/com/android/camera/VideoModule.java
@@ -458,7 +458,8 @@ public class VideoModule implements CameraModule,
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(mCurrentVideoUri, convertOutputFormatToMimeType(mProfile.fileFormat));
try {
- mActivity.startActivity(intent);
+ mActivity
+ .startActivityForResult(intent, CameraActivity.REQ_CODE_DONT_SWITCH_TO_PREVIEW);
} catch (ActivityNotFoundException ex) {
Log.e(TAG, "Couldn't view video " + mCurrentVideoUri, ex);
}
diff --git a/src/com/android/camera/data/CameraDataAdapter.java b/src/com/android/camera/data/CameraDataAdapter.java
index af9fbb8f3..892aa1056 100644
--- a/src/com/android/camera/data/CameraDataAdapter.java
+++ b/src/com/android/camera/data/CameraDataAdapter.java
@@ -16,6 +16,7 @@
package com.android.camera.data;
+import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
@@ -94,13 +95,13 @@ public class CameraDataAdapter implements LocalDataAdapter {
}
@Override
- public View getView(Context c, int dataID) {
+ public View getView(Activity activity, int dataID) {
if (dataID >= mImages.size() || dataID < 0) {
return null;
}
return mImages.get(dataID).getView(
- c, mSuggestedWidth, mSuggestedHeight,
+ activity, mSuggestedWidth, mSuggestedHeight,
mPlaceHolder.getConstantState().newDrawable());
}
diff --git a/src/com/android/camera/data/FixedFirstDataAdapter.java b/src/com/android/camera/data/FixedFirstDataAdapter.java
index 53eb3bb86..05923b407 100644
--- a/src/com/android/camera/data/FixedFirstDataAdapter.java
+++ b/src/com/android/camera/data/FixedFirstDataAdapter.java
@@ -16,6 +16,7 @@
package com.android.camera.data;
+import android.app.Activity;
import android.content.Context;
import android.net.Uri;
import android.view.View;
@@ -106,12 +107,12 @@ public class FixedFirstDataAdapter extends AbstractLocalDataAdapterWrapper
}
@Override
- public View getView(Context context, int dataID) {
+ public View getView(Activity activity, int dataID) {
if (dataID == 0) {
return mFirstData.getView(
- context, mSuggestedWidth, mSuggestedHeight, null);
+ activity, mSuggestedWidth, mSuggestedHeight, null);
}
- return mAdapter.getView(context, dataID - 1);
+ return mAdapter.getView(activity, dataID - 1);
}
@Override
diff --git a/src/com/android/camera/data/FixedLastDataAdapter.java b/src/com/android/camera/data/FixedLastDataAdapter.java
index a0b78aa98..a7157de19 100644
--- a/src/com/android/camera/data/FixedLastDataAdapter.java
+++ b/src/com/android/camera/data/FixedLastDataAdapter.java
@@ -16,6 +16,7 @@
package com.android.camera.data;
+import android.app.Activity;
import android.content.Context;
import android.net.Uri;
import android.view.View;
@@ -109,13 +110,13 @@ public class FixedLastDataAdapter extends AbstractLocalDataAdapterWrapper {
}
@Override
- public View getView(Context context, int dataID) {
+ public View getView(Activity activity, int dataID) {
int totalNumber = mAdapter.getTotalNumber();
if (dataID < totalNumber) {
- return mAdapter.getView(context, dataID);
+ return mAdapter.getView(activity, dataID);
} else if (dataID == totalNumber) {
- return mLastData.getView(context,
+ return mLastData.getView(activity,
mSuggestedWidth, mSuggestedHeight, null);
}
diff --git a/src/com/android/camera/data/LocalData.java b/src/com/android/camera/data/LocalData.java
index 2db4ac577..844cc5548 100644
--- a/src/com/android/camera/data/LocalData.java
+++ b/src/com/android/camera/data/LocalData.java
@@ -16,10 +16,10 @@
package com.android.camera.data;
+import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.graphics.drawable.Drawable;
-import android.net.Uri;
import android.view.View;
import com.android.camera.ui.FilmStripView;
@@ -68,7 +68,7 @@ public interface LocalData extends FilmStripView.ImageData {
*/
public static final int LOCAL_360_PHOTO_SPHERE = 6;
- View getView(Context c, int width, int height, Drawable placeHolder);
+ View getView(Activity a, int width, int height, Drawable placeHolder);
/**
* Gets the date when this data is created. The returned date is also used
diff --git a/src/com/android/camera/data/LocalMediaData.java b/src/com/android/camera/data/LocalMediaData.java
index 53c153c0c..8e5216d17 100644
--- a/src/com/android/camera/data/LocalMediaData.java
+++ b/src/com/android/camera/data/LocalMediaData.java
@@ -16,6 +16,7 @@
package com.android.camera.data;
+import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
@@ -205,9 +206,9 @@ public abstract class LocalMediaData implements LocalData {
}
@Override
- public View getView(Context ctx,
+ public View getView(Activity activity,
int decodeWidth, int decodeHeight, Drawable placeHolder) {
- return fillImageView(ctx, new ImageView(ctx),
+ return fillImageView(activity, new ImageView(activity),
decodeWidth, decodeHeight, placeHolder);
}
@@ -680,18 +681,18 @@ public abstract class LocalMediaData implements LocalData {
}
@Override
- public View getView(final Context ctx,
+ public View getView(final Activity activity,
int decodeWidth, int decodeHeight, Drawable placeHolder) {
// ImageView for the bitmap.
- ImageView iv = new ImageView(ctx);
+ ImageView iv = new ImageView(activity);
iv.setLayoutParams(new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT, Gravity.CENTER));
- fillImageView(ctx, iv, decodeWidth, decodeHeight, placeHolder);
+ fillImageView(activity, iv, decodeWidth, decodeHeight, placeHolder);
// ImageView for the play icon.
- ImageView icon = new ImageView(ctx);
+ ImageView icon = new ImageView(activity);
icon.setImageResource(R.drawable.ic_control_play);
icon.setScaleType(ImageView.ScaleType.CENTER);
icon.setLayoutParams(new FrameLayout.LayoutParams(
@@ -700,11 +701,11 @@ public abstract class LocalMediaData implements LocalData {
icon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- CameraUtil.playVideo(ctx, getContentUri(), mTitle);
+ CameraUtil.playVideo(activity, getContentUri(), mTitle);
}
});
- FrameLayout f = new FrameLayout(ctx);
+ FrameLayout f = new FrameLayout(activity);
f.addView(iv);
f.addView(icon);
return f;
diff --git a/src/com/android/camera/data/SimpleViewData.java b/src/com/android/camera/data/SimpleViewData.java
index a49d3eac8..3ff17226a 100644
--- a/src/com/android/camera/data/SimpleViewData.java
+++ b/src/com/android/camera/data/SimpleViewData.java
@@ -16,6 +16,7 @@
package com.android.camera.data;
+import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.graphics.drawable.Drawable;
@@ -114,7 +115,7 @@ public class SimpleViewData implements LocalData {
}
@Override
- public View getView(Context c, int width, int height, Drawable placeHolder) {
+ public View getView(Activity activity, int width, int height, Drawable placeHolder) {
return mView;
}
diff --git a/src/com/android/camera/ui/FilmStripView.java b/src/com/android/camera/ui/FilmStripView.java
index 607dacf07..17fbc7fb8 100644
--- a/src/com/android/camera/ui/FilmStripView.java
+++ b/src/com/android/camera/ui/FilmStripView.java
@@ -19,6 +19,7 @@ package com.android.camera.ui;
import android.animation.Animator;
import android.animation.TimeInterpolator;
import android.animation.ValueAnimator;
+import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Rect;
@@ -255,12 +256,12 @@ public class FilmStripView extends ViewGroup implements BottomControlsListener {
/**
* Returns the view to visually present the image data.
*
- * @param context The {@link Context} to create the view.
+ * @param activity The {@link Activity} context to create the view.
* @param dataID The ID of the image data to be presented.
* @return The view representing the image data. Null if unavailable or
* the {@code dataID} is out of range.
*/
- public View getView(Context context, int dataID);
+ public View getView(Activity activity, int dataID);
/**
* Returns the {@link ImageData} specified by the ID.
diff --git a/src/com/android/camera/util/CameraUtil.java b/src/com/android/camera/util/CameraUtil.java
index c5dc71af3..ca0109ab3 100644
--- a/src/com/android/camera/util/CameraUtil.java
+++ b/src/com/android/camera/util/CameraUtil.java
@@ -63,6 +63,7 @@ import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.widget.Toast;
+import com.android.camera.CameraActivity;
import com.android.camera.CameraDisabledException;
import com.android.camera.CameraHardwareException;
import com.android.camera.CameraHolder;
@@ -638,23 +639,6 @@ public class CameraUtil {
return true;
}
- public static void viewUri(Uri uri, Context context) {
- if (!isUriValid(uri, context.getContentResolver())) {
- Log.e(TAG, "Uri invalid. uri=" + uri);
- return;
- }
-
- try {
- context.startActivity(new Intent(CameraUtil.REVIEW_ACTION, uri));
- } catch (ActivityNotFoundException ex) {
- try {
- context.startActivity(new Intent(Intent.ACTION_VIEW, uri));
- } catch (ActivityNotFoundException e) {
- Log.e(TAG, "review image fail. uri=" + uri, e);
- }
- }
- }
-
public static void dumpRect(RectF rect, String msg) {
Log.v(TAG, msg + "=(" + rect.left + "," + rect.top
+ "," + rect.right + "," + rect.bottom + ")");
@@ -826,15 +810,15 @@ public class CameraUtil {
}
}
- public static void playVideo(Context context, Uri uri, String title) {
+ public static void playVideo(Activity activity, Uri uri, String title) {
try {
Intent intent = new Intent(Intent.ACTION_VIEW)
.setDataAndType(uri, "video/*")
.putExtra(Intent.EXTRA_TITLE, title)
.putExtra(KEY_TREAT_UP_AS_BACK, true);
- context.startActivity(intent);
+ activity.startActivityForResult(intent, CameraActivity.REQ_CODE_DONT_SWITCH_TO_PREVIEW);
} catch (ActivityNotFoundException e) {
- Toast.makeText(context, context.getString(R.string.video_err),
+ Toast.makeText(activity, activity.getString(R.string.video_err),
Toast.LENGTH_SHORT).show();
}
}
@@ -843,10 +827,10 @@ public class CameraUtil {
* Starts GMM with the given location shown. If this fails, and GMM could
* not be found, we use a geo intent as a fallback.
*
- * @param context the Android context to use for starting the activities.
+ * @param activity the activity to use for launching the Maps intent.
* @param latLong a 2-element array containing {latitude/longitude}.
*/
- public static void showOnMap(Context context, double[] latLong) {
+ public static void showOnMap(Activity activity, double[] latLong) {
try {
// We don't use "geo:latitude,longitude" because it only centers
// the MapView to the specified location, but we need a marker
@@ -858,13 +842,14 @@ public class CameraUtil {
MAPS_CLASS_NAME);
Intent mapsIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse(uri)).setComponent(compName);
- context.startActivity(mapsIntent);
+ activity.startActivityForResult(mapsIntent,
+ CameraActivity.REQ_CODE_DONT_SWITCH_TO_PREVIEW);
} catch (ActivityNotFoundException e) {
// Use the "geo intent" if no GMM is installed
Log.e(TAG, "GMM activity not found!", e);
String url = String.format(Locale.ENGLISH, "geo:%f,%f", latLong[0], latLong[1]);
Intent mapsIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
- context.startActivity(mapsIntent);
+ activity.startActivity(mapsIntent);
}
}
}