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;
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;
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;
// 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. */
private PhotoItemFactory mPhotoItemFactory;
private LocalFilmstripDataAdapter mDataAdapter;
+ private ActiveCameraDeviceTracker mActiveCameraDeviceTracker;
private OneCameraOpener mOneCameraOpener;
private OneCameraManager mOneCameraManager;
private SettingsManager mSettingsManager;
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
}
@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) {
}
@Override
public String getModuleScope() {
ModuleAgent agent = mModuleManager.getModuleAgent(mCurrentModeIndex);
- return MODULE_SCOPE_PREFIX + agent.getScopeNamespace();
+ return SettingsManager.getModuleSettingScope(agent.getScopeNamespace());
}
@Override
// 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
// 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.MAXIMUM_TEXTURE_SIZE)
- .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_WIDTH,
- GlideFilmstripManager.MEDIASTORE_THUMB_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..
CameraAgentFactory.CameraApi.API_1),
CameraAgentFactory.getAndroidCameraAgent(mAppContext,
CameraAgentFactory.CameraApi.AUTO),
- ActiveCameraDeviceTracker.instance());
+ mActiveCameraDeviceTracker);
mCameraController.setCameraExceptionHandler(
new CameraExceptionHandler(mCameraExceptionCallback, mMainHandler));
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,
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();
}
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);
}