OSDN Git Service

Ensure OnScreenHint uses an Activity
[android-x86/packages-apps-Camera2.git] / src / com / android / camera / CameraActivity.java
index f693000..e8ed35d 100644 (file)
@@ -118,6 +118,7 @@ import com.android.camera.session.CaptureSessionManager.SessionListener;
 import com.android.camera.settings.AppUpgrader;
 import com.android.camera.settings.CameraSettingsActivity;
 import com.android.camera.settings.Keys;
+import com.android.camera.settings.PictureSizeLoader;
 import com.android.camera.settings.ResolutionSetting;
 import com.android.camera.settings.ResolutionUtil;
 import com.android.camera.settings.SettingsManager;
@@ -134,6 +135,7 @@ import com.android.camera.ui.ModeListView.ModeListVisibilityChangedListener;
 import com.android.camera.ui.PreviewStatusListener;
 import com.android.camera.util.ApiHelper;
 import com.android.camera.util.Callback;
+import com.android.camera.util.CameraSettingsActivityHelper;
 import com.android.camera.util.CameraUtil;
 import com.android.camera.util.GalleryHelper;
 import com.android.camera.util.GcamHelper;
@@ -154,7 +156,6 @@ import com.bumptech.glide.GlideBuilder;
 import com.bumptech.glide.MemoryCategory;
 import com.bumptech.glide.load.DecodeFormat;
 import com.bumptech.glide.load.engine.executor.FifoPriorityThreadPoolExecutor;
-import com.bumptech.glide.load.engine.prefill.PreFillType;
 import com.google.common.base.Optional;
 import com.google.common.logging.eventprotos;
 import com.google.common.logging.eventprotos.ForegroundEvent.ForegroundSource;
@@ -184,9 +185,6 @@ public class CameraActivity extends QuickActivity
     // panorama. If the extra is not set, it is in the normal camera mode.
     public static final String SECURE_CAMERA_EXTRA = "secure_camera";
 
-    public static final String MODULE_SCOPE_PREFIX = "_preferences_module_";
-    public static final String CAMERA_SCOPE_PREFIX = "_preferences_camera_";
-
     private static final int MSG_CLEAR_SCREEN_ON_FLAG = 2;
     private static final long SCREEN_DELAY_MS = 2 * 60 * 1000; // 2 mins.
     /** Load metadata for 10 items ahead of our current. */
@@ -214,6 +212,7 @@ public class CameraActivity extends QuickActivity
     private PhotoItemFactory mPhotoItemFactory;
     private LocalFilmstripDataAdapter mDataAdapter;
 
+    private ActiveCameraDeviceTracker mActiveCameraDeviceTracker;
     private OneCameraOpener mOneCameraOpener;
     private OneCameraManager mOneCameraManager;
     private SettingsManager mSettingsManager;
@@ -880,8 +879,10 @@ public class CameraActivity extends QuickActivity
                     if (!Storage.isSessionUri(uri)) {
                         return;
                     }
-                    SessionItem newData = new SessionItem(getApplicationContext(), uri);
-                    mDataAdapter.addOrUpdate(newData);
+                    Optional<SessionItem> newData = SessionItem.create(getApplicationContext(), uri);
+                    if (newData.isPresent()) {
+                        mDataAdapter.addOrUpdate(newData.get());
+                    }
                 }
 
                 @Override
@@ -988,6 +989,13 @@ public class CameraActivity extends QuickActivity
                 }
 
                 @Override
+                public void onSessionCanceled(Uri uri) {
+                    Log.v(TAG, "onSessionCanceled:" + uri);
+                    int failedIndex = mDataAdapter.findByContentUri(uri);
+                    mDataAdapter.removeAt(failedIndex);
+                }
+
+                @Override
                 public void onSessionThumbnailUpdate(Bitmap bitmap) {
                 }
 
@@ -1028,7 +1036,7 @@ public class CameraActivity extends QuickActivity
     @Override
     public String getModuleScope() {
         ModuleAgent agent = mModuleManager.getModuleAgent(mCurrentModeIndex);
-        return MODULE_SCOPE_PREFIX + agent.getScopeNamespace();
+        return SettingsManager.getModuleSettingScope(agent.getScopeNamespace());
     }
 
     @Override
@@ -1038,7 +1046,8 @@ public class CameraActivity extends QuickActivity
         // this could cause user issues, so log a stack trace noting the call path
         // which resulted in this scenario.
 
-        return CAMERA_SCOPE_PREFIX + mCameraController.getCurrentCameraId().getValue();
+        return SettingsManager.getCameraSettingScope(
+                mCameraController.getCurrentCameraId().getValue());
     }
 
     @Override
@@ -1426,25 +1435,16 @@ public class CameraActivity extends QuickActivity
             // As a camera we will use a large amount of memory
             // for displaying images.
             glide.setMemoryCategory(MemoryCategory.HIGH);
-
-            // Prefill glides bitmap pool to prevent excessive jank
-            // when loading large images.
-            glide.preFillBitmapPool(
-                new PreFillType.Builder(
-                      GlideFilmstripManager.MAX_GL_TEXTURE_SIZE.width(),
-                      GlideFilmstripManager.MAX_GL_TEXTURE_SIZE.height())
-                  .setWeight(5),
-                  // It's more important for jank and GC to have
-                  // A larger weight of max texture size images than
-                  // media store sized images.
-                new PreFillType.Builder(
-                      GlideFilmstripManager.MEDIASTORE_THUMB_SIZE.width(),
-                      GlideFilmstripManager.MEDIASTORE_THUMB_SIZE.height()));
         }
         profile.mark("Glide.setup");
+
+        mActiveCameraDeviceTracker = ActiveCameraDeviceTracker.instance();
         try {
             mOneCameraOpener = OneCameraModule.provideOneCameraOpener(
-                  mFeatureConfig, mAppContext, ResolutionUtil.getDisplayMetrics(this));
+                    mFeatureConfig,
+                    mAppContext,
+                    mActiveCameraDeviceTracker,
+                    ResolutionUtil.getDisplayMetrics(this));
             mOneCameraManager = OneCameraModule.provideOneCameraManager();
         } catch (OneCameraException e) {
             // Log error and continue start process while showing error dialog..
@@ -1458,7 +1458,7 @@ public class CameraActivity extends QuickActivity
                         CameraAgentFactory.CameraApi.API_1),
                 CameraAgentFactory.getAndroidCameraAgent(mAppContext,
                         CameraAgentFactory.CameraApi.AUTO),
-                ActiveCameraDeviceTracker.instance());
+                mActiveCameraDeviceTracker);
         mCameraController.setCameraExceptionHandler(
                 new CameraExceptionHandler(mCameraExceptionCallback, mMainHandler));
 
@@ -1470,6 +1470,12 @@ public class CameraActivity extends QuickActivity
 
         AppUpgrader appUpgrader = new AppUpgrader(this);
         appUpgrader.upgrade(mSettingsManager);
+
+        // Make sure the picture sizes are correctly cached for the current OS
+        // version.
+        profile.mark();
+        (new PictureSizeLoader(mAppContext)).computePictureSizes();
+        profile.mark("computePictureSizes");
         Keys.setDefaults(mSettingsManager, mAppContext);
 
         mResolutionSetting = new ResolutionSetting(mSettingsManager, mOneCameraManager,
@@ -1667,6 +1673,10 @@ public class CameraActivity extends QuickActivity
               new FirstRunDialog.FirstRunDialogListener() {
             @Override
             public void onFirstRunStateReady() {
+                // Make sure additional preferences have the correct resolution selected
+                CameraSettingsActivityHelper.verifyDefaults(getSettingsManager(),
+                        getAndroidContext());
+
                 // Run normal resume tasks.
                 resume();
             }
@@ -2265,7 +2275,7 @@ public class CameraActivity extends QuickActivity
         if (message != null) {
             Log.w(TAG, "Storage warning: " + message);
             if (mStorageHint == null) {
-                mStorageHint = OnScreenHint.makeText(message);
+                mStorageHint = OnScreenHint.makeText(CameraActivity.this, message);
             } else {
                 mStorageHint.setText(message);
             }