diff options
author | Angus Kong <shkong@google.com> | 2012-08-27 12:47:21 +0800 |
---|---|---|
committer | Angus Kong <shkong@google.com> | 2012-08-27 16:03:48 +0800 |
commit | 305e6e3d3091cd4a500fdbaabde18e531b8d450a (patch) | |
tree | 3dd56a7b5f68f1819c3147b5130c198358ecddfd | |
parent | fa3e84a0ce70f03b47c94434fdb52780a8b08e62 (diff) | |
download | android_packages_apps_Snap-305e6e3d3091cd4a500fdbaabde18e531b8d450a.tar.gz android_packages_apps_Snap-305e6e3d3091cd4a500fdbaabde18e531b8d450a.tar.bz2 android_packages_apps_Snap-305e6e3d3091cd4a500fdbaabde18e531b8d450a.zip |
Add LightCycle helper class.
LightCycleHelper also receives event of package changes to get updated.
bug:6912297
Change-Id: Ib822ee778537b64986389bf8eeec36f61c9289f2
-rw-r--r-- | gallerycommon/src/com/android/gallery3d/common/LightCycleHelper.java | 79 | ||||
-rw-r--r-- | src/com/android/gallery3d/app/PackagesMonitor.java | 4 |
2 files changed, 83 insertions, 0 deletions
diff --git a/gallerycommon/src/com/android/gallery3d/common/LightCycleHelper.java b/gallerycommon/src/com/android/gallery3d/common/LightCycleHelper.java new file mode 100644 index 000000000..f8df29dd4 --- /dev/null +++ b/gallerycommon/src/com/android/gallery3d/common/LightCycleHelper.java @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2012 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.gallery3d.common; + +import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageManager; + +public class LightCycleHelper { + 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 = + "com.google.android.apps.lightcycle.PanoramaViewActivity"; + public static final String EXTRA_OUTPUT_DIR = "output_dir"; + + private static boolean sUpdated; + private static boolean sHasViewActivity; + private static boolean sHasCaptureActivity; + + private static boolean hasLightCycleActivity(PackageManager pm, String activityClass) { + Intent it = new Intent(); + it.setClassName(LIGHTCYCLE_PACKAGE, activityClass); + return (pm.resolveActivity(it, 0) != null); + } + + private static void update(PackageManager pm) { + sUpdated = true; + sHasViewActivity = hasLightCycleActivity(pm, LIGHTCYCLE_VIEW_CLASS); + sHasCaptureActivity = hasLightCycleActivity(pm, LIGHTCYCLE_CAPTURE_CLASS); + } + + public synchronized static boolean hasLightCycleView(PackageManager pm) { + if (!sUpdated) { + update(pm); + } + return sHasViewActivity; + } + + public synchronized static boolean hasLightCycleCapture(PackageManager pm) { + if (!sUpdated) { + update(pm); + } + return sHasCaptureActivity; + } + + public synchronized static void onPackageAdded(Context context, String packageName) { + if (LIGHTCYCLE_PACKAGE.equals(packageName)) { + update(context.getPackageManager()); + } + } + + public synchronized static void onPackageRemoved(Context context, String packageName) { + if (LIGHTCYCLE_PACKAGE.equals(packageName)) { + update(context.getPackageManager()); + } + } + + public synchronized static void onPackageChanged(Context context, String packageName) { + if (LIGHTCYCLE_PACKAGE.equals(packageName)) { + update(context.getPackageManager()); + } + } +} diff --git a/src/com/android/gallery3d/app/PackagesMonitor.java b/src/com/android/gallery3d/app/PackagesMonitor.java index d8aa8c914..05a2bd7f6 100644 --- a/src/com/android/gallery3d/app/PackagesMonitor.java +++ b/src/com/android/gallery3d/app/PackagesMonitor.java @@ -23,6 +23,7 @@ import android.content.Intent; import android.content.SharedPreferences; import android.preference.PreferenceManager; +import com.android.gallery3d.common.LightCycleHelper; import com.android.gallery3d.picasasource.PicasaSource; public class PackagesMonitor extends BroadcastReceiver { @@ -61,10 +62,13 @@ public class PackagesMonitor extends BroadcastReceiver { String packageName = intent.getData().getSchemeSpecificPart(); if (Intent.ACTION_PACKAGE_ADDED.equals(action)) { PicasaSource.onPackageAdded(context, packageName); + LightCycleHelper.onPackageAdded(context, packageName); } else if (Intent.ACTION_PACKAGE_REMOVED.equals(action)) { PicasaSource.onPackageRemoved(context, packageName); + LightCycleHelper.onPackageRemoved(context, packageName); } else if (Intent.ACTION_PACKAGE_CHANGED.equals(action)) { PicasaSource.onPackageChanged(context, packageName); + LightCycleHelper.onPackageChanged(context, packageName); } } } |