package com.android.gallery3d.common;
+import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
+import android.net.Uri;
public class LightCycleHelper {
+ public static final String EXTRA_OUTPUT_DIR = "output_dir";
+ private static final String PANORAMA_FILENAME_PREFIX = "panorama_";
public static final String LIGHTCYCLE_PACKAGE =
"com.google.android.apps.lightcycle";
public static final String LIGHTCYCLE_CAPTURE_CLASS =
"com.google.android.apps.lightcycle.PanoramaCaptureActivity";
- public static final String LIGHTCYCLE_VIEW_CLASS =
+ private static final String LIGHTCYCLE_VIEW_CLASS =
"com.google.android.apps.lightcycle.PanoramaViewActivity";
- public static final String EXTRA_OUTPUT_DIR = "output_dir";
private static boolean sUpdated;
private static boolean sHasViewActivity;
sHasCaptureActivity = hasLightCycleActivity(pm, LIGHTCYCLE_CAPTURE_CLASS);
}
- public synchronized static boolean hasLightCycleView(PackageManager pm) {
+ public static synchronized boolean hasLightCycleView(PackageManager pm) {
if (!sUpdated) {
update(pm);
}
return sHasViewActivity;
}
- public synchronized static boolean hasLightCycleCapture(PackageManager pm) {
+ public static synchronized boolean hasLightCycleCapture(PackageManager pm) {
if (!sUpdated) {
update(pm);
}
return sHasCaptureActivity;
}
- public synchronized static void onPackageAdded(Context context, String packageName) {
+ public static synchronized void onPackageAdded(Context context, String packageName) {
if (LIGHTCYCLE_PACKAGE.equals(packageName)) {
update(context.getPackageManager());
}
}
- public synchronized static void onPackageRemoved(Context context, String packageName) {
+ public static synchronized void onPackageRemoved(Context context, String packageName) {
if (LIGHTCYCLE_PACKAGE.equals(packageName)) {
update(context.getPackageManager());
}
}
- public synchronized static void onPackageChanged(Context context, String packageName) {
+ public static synchronized void onPackageChanged(Context context, String packageName) {
if (LIGHTCYCLE_PACKAGE.equals(packageName)) {
update(context.getPackageManager());
}
}
+
+ public static void viewPanorama(Activity activity, Uri uri, String type) {
+ try {
+ Intent intent = new Intent(Intent.ACTION_VIEW)
+ .setDataAndType(uri, type)
+ .setClassName(LIGHTCYCLE_PACKAGE, LIGHTCYCLE_VIEW_CLASS);
+ activity.startActivity(intent);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public static boolean isPanorama(String filename) {
+ return filename.startsWith(PANORAMA_FILENAME_PREFIX);
+ }
}
import com.android.gallery3d.R;
import com.android.gallery3d.anim.FloatAnimation;
import com.android.gallery3d.common.ApiHelper;
+import com.android.gallery3d.common.LightCycleHelper;
import com.android.gallery3d.common.Utils;
import com.android.gallery3d.data.DataManager;
import com.android.gallery3d.data.FilterDeleteSet;
+import com.android.gallery3d.data.LocalImage;
import com.android.gallery3d.data.MediaDetails;
import com.android.gallery3d.data.MediaItem;
import com.android.gallery3d.data.MediaObject;
private final GLView mRootPane = new GLView() {
@Override
protected void renderBackground(GLCanvas view) {
- if(mFadeOutTexture != null) {
- if(mBackgroundFade.calculate(AnimationTime.get())) invalidate();
- if(!mBackgroundFade.isActive()) {
+ if (mFadeOutTexture != null) {
+ if (mBackgroundFade.calculate(AnimationTime.get())) invalidate();
+ if (!mBackgroundFade.isActive()) {
mFadeOutTexture = null;
mOpenAnimationRect = null;
BitmapScreenNail.enableDrawPlaceholder();
} else {
float fadeAlpha = mBackgroundFade.get();
- if(fadeAlpha < 1f) {
+ if (fadeAlpha < 1f) {
view.clearBuffer(getBackgroundColor());
view.setAlpha(fadeAlpha);
}
mPhotoView = new PhotoView(mActivity);
mPhotoView.setListener(this);
mRootPane.addComponent(mPhotoView);
- mApplication = (GalleryApp)((Activity) mActivity).getApplication();
+ mApplication = (GalleryApp) ((Activity) mActivity).getApplication();
mOrientationManager = mActivity.getOrientationManager();
mOrientationManager.addListener(this);
mActivity.getGLRoot().setOrientationSource(mOrientationManager);
// start the opening animation only if it's not restored.
if (restoreState == null) {
mFadeOutTexture = mActivity.getTransitionStore().get(AlbumPage.KEY_FADE_TEXTURE);
- if(mFadeOutTexture != null) {
+ if (mFadeOutTexture != null) {
mBackgroundFade.start();
BitmapScreenNail.disableDrawPlaceholder();
mOpenAnimationRect = (Rect) data.getParcelable(KEY_OPEN_ANIMATION_RECT);
boolean playVideo = (mSecureAlbum == null) &&
((item.getSupportedOperations() & MediaItem.SUPPORT_PLAY) != 0);
+ boolean viewPanorama =
+ (item.getSupportedOperations() & MediaItem.SUPPORT_VIEW_PANORAMA) != 0;
if (playVideo) {
// determine if the point is at center (1/6) of the photo view.
if (playVideo) {
playVideo(mActivity, item.getPlayUri(), item.getName());
+ } else if (viewPanorama) {
+ LocalImage img = (LocalImage) item;
+ LightCycleHelper.viewPanorama(
+ mActivity, img.getContentUri(), img.getMimeType());
} else {
toggleBars();
}
import com.android.gallery3d.app.GalleryApp;
import com.android.gallery3d.common.ApiHelper;
import com.android.gallery3d.common.BitmapUtils;
+import com.android.gallery3d.common.LightCycleHelper;
import com.android.gallery3d.util.GalleryUtils;
import com.android.gallery3d.util.ThreadPool.Job;
import com.android.gallery3d.util.ThreadPool.JobContext;
if (GalleryUtils.isValidLocation(latitude, longitude)) {
operation |= SUPPORT_SHOW_ON_MAP;
}
+
+ if (LightCycleHelper.isPanorama(caption) &&
+ LightCycleHelper.hasLightCycleView(
+ mApplication.getAndroidContext().getPackageManager())) {
+ operation |= SUPPORT_VIEW_PANORAMA;
+ }
return operation;
}
public static final int SUPPORT_INFO = 1 << 10;
public static final int SUPPORT_IMPORT = 1 << 11;
public static final int SUPPORT_TRIM = 1 << 12;
+ public static final int SUPPORT_VIEW_PANORAMA = 1 << 13;
public static final int SUPPORT_ALL = 0xffffffff;
// These are the bits returned from getMediaType():