summaryrefslogtreecommitdiffstats
path: root/src/com/android
diff options
context:
space:
mode:
authormingwax <mingwax@codeaurora.org>2016-11-07 11:07:37 +0800
committermingwax <mingwax@codeaurora.org>2016-11-10 08:44:54 +0800
commitf5b99060843d791ece129463dcc5e377cd89c072 (patch)
tree6bd22d238260235b7a2c799dc30cd3474ba436b4 /src/com/android
parentfa36a1cc7d1252854751c9340ccba6e9de806255 (diff)
downloadandroid_packages_apps_Snap-f5b99060843d791ece129463dcc5e377cd89c072.tar.gz
android_packages_apps_Snap-f5b99060843d791ece129463dcc5e377cd89c072.tar.bz2
android_packages_apps_Snap-f5b99060843d791ece129463dcc5e377cd89c072.zip
SnapdragonCamera: Fix camera can`t enter setting in pattern lock
RootCause: Missing flag of WindowManager.LayoutParames in SettingsActivity.java and SceneModeActivity.java. Solution: (1) Add windowManager.LayoutParams.FLAG_SHOW_WHEN _LOCKED in SettingsActivity.java and SceneModeActivity.java. (2) Change SettingsManager`s single instance, and guarantee SettingsManager only one instance. (3) When SettingsActivity.java and SceneModeActivity.java is invisible status, finish them and ensure data is updated in a timely manner. Change-Id: I3ac24b9b181055382849550e585d3be726e71595 CRs-Fixed: 1084871
Diffstat (limited to 'src/com/android')
-rw-r--r--src/com/android/camera/CameraActivity.java6
-rw-r--r--src/com/android/camera/CaptureUI.java1
-rw-r--r--src/com/android/camera/SceneModeActivity.java23
-rw-r--r--src/com/android/camera/SettingsActivity.java17
-rw-r--r--src/com/android/camera/SettingsManager.java3
-rw-r--r--src/com/android/camera/app/CameraApp.java2
-rw-r--r--src/com/android/camera/util/CameraUtil.java2
7 files changed, 47 insertions, 7 deletions
diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java
index 98fddcbe8..d8444fb7e 100644
--- a/src/com/android/camera/CameraActivity.java
+++ b/src/com/android/camera/CameraActivity.java
@@ -1486,8 +1486,6 @@ public class CameraActivity extends Activity
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
- SettingsManager.createInstance(this);
-
LayoutInflater inflater = getLayoutInflater();
View rootLayout = inflater.inflate(R.layout.camera, null, false);
mCameraRootFrame = (FrameLayout)rootLayout.findViewById(R.id.camera_root_frame);
@@ -1829,10 +1827,6 @@ public class CameraActivity extends Activity
mWakeLock.release();
Log.d(TAG, "wake lock release");
}
- SettingsManager settingsMngr = SettingsManager.getInstance();
- if (settingsMngr != null) {
- settingsMngr.destroyInstance();
- }
if (mCursor != null) {
getContentResolver().unregisterContentObserver(mLocalImagesObserver);
getContentResolver().unregisterContentObserver(mLocalVideosObserver);
diff --git a/src/com/android/camera/CaptureUI.java b/src/com/android/camera/CaptureUI.java
index ae67007d0..4866a6b6a 100644
--- a/src/com/android/camera/CaptureUI.java
+++ b/src/com/android/camera/CaptureUI.java
@@ -526,6 +526,7 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
clearFocus();
removeFilterMenu(false);
Intent intent = new Intent(mActivity, SceneModeActivity.class);
+ intent.putExtra(CameraUtil.KEY_IS_SECURE_CAMERA, mActivity.isSecureCamera());
mActivity.startActivity(intent);
}
});
diff --git a/src/com/android/camera/SceneModeActivity.java b/src/com/android/camera/SceneModeActivity.java
index 09ad391c1..9e0e59506 100644
--- a/src/com/android/camera/SceneModeActivity.java
+++ b/src/com/android/camera/SceneModeActivity.java
@@ -38,6 +38,8 @@ import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.view.Window;
+import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.GridView;
@@ -49,6 +51,7 @@ import org.codeaurora.snapcam.R;
import com.android.camera.ui.DotsView;
import com.android.camera.ui.DotsViewItem;
import com.android.camera.ui.RotateImageView;
+import com.android.camera.util.CameraUtil;
public class SceneModeActivity extends Activity {
private ViewPager mPager;
@@ -86,6 +89,11 @@ public class SceneModeActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ final boolean isSecureCamera = getIntent().getBooleanExtra(
+ CameraUtil.KEY_IS_SECURE_CAMERA, false);
+ if (isSecureCamera) {
+ setShowInLockScreen();
+ }
setContentView(R.layout.scene_mode_menu_layout);
mSettingsManager = SettingsManager.getInstance();
@@ -137,6 +145,7 @@ public class SceneModeActivity extends Activity {
@Override
public void onClick(View v) {
Intent intent = new Intent(getBaseContext(), SettingsActivity.class);
+ intent.putExtra(CameraUtil.KEY_IS_SECURE_CAMERA, isSecureCamera);
startActivity(intent);
finish();
}
@@ -171,6 +180,20 @@ public class SceneModeActivity extends Activity {
public int getCurrentScene() {
return mCurrentScene;
}
+
+ private void setShowInLockScreen() {
+ // Change the window flags so that secure camera can show when locked
+ Window win = getWindow();
+ WindowManager.LayoutParams params = win.getAttributes();
+ params.flags |= WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED;
+ win.setAttributes(params);
+ }
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+ finish();
+ }
}
class MyPagerAdapter extends PagerAdapter {
diff --git a/src/com/android/camera/SettingsActivity.java b/src/com/android/camera/SettingsActivity.java
index 32c6b5cad..d4f5ac13a 100644
--- a/src/com/android/camera/SettingsActivity.java
+++ b/src/com/android/camera/SettingsActivity.java
@@ -39,10 +39,13 @@ import android.preference.PreferenceGroup;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.preference.SwitchPreference;
+import android.view.Window;
+import android.view.WindowManager;
import android.util.Log;
import android.widget.Toast;
import org.codeaurora.snapcam.R;
+import com.android.camera.util.CameraUtil;
import java.util.List;
import java.util.Map;
@@ -86,6 +89,11 @@ public class SettingsActivity extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ final boolean isSecureCamera = getIntent().getBooleanExtra(
+ CameraUtil.KEY_IS_SECURE_CAMERA, false);
+ if (isSecureCamera) {
+ setShowInLockScreen();
+ }
mSettingsManager = SettingsManager.getInstance();
addPreferencesFromResource(R.xml.setting_menu_preferences);
@@ -213,5 +221,14 @@ public class SettingsActivity extends PreferenceActivity {
protected void onStop() {
super.onStop();
mSharedPreferences.unregisterOnSharedPreferenceChangeListener(mSharedPreferenceChangeListener);
+ finish();
+ }
+
+ private void setShowInLockScreen() {
+ // Change the window flags so that secure camera can show when locked
+ Window win = getWindow();
+ WindowManager.LayoutParams params = win.getAttributes();
+ params.flags |= WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED;
+ win.setAttributes(params);
}
} \ No newline at end of file
diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java
index e076b3824..051f5db09 100644
--- a/src/com/android/camera/SettingsManager.java
+++ b/src/com/android/camera/SettingsManager.java
@@ -55,6 +55,7 @@ import com.android.camera.imageprocessor.filter.UbifocusFilter;
import com.android.camera.ui.ListMenu;
import com.android.camera.ui.PanoCaptureProcessView;
import com.android.camera.util.SettingTranslation;
+import com.android.camera.app.CameraApp;
import org.codeaurora.snapcam.R;
import org.json.JSONException;
@@ -193,7 +194,7 @@ public class SettingsManager implements ListMenu.SettingsListener {
public static SettingsManager createInstance(Context context) {
if (sInstance == null) {
- sInstance = new SettingsManager(context);
+ sInstance = new SettingsManager(context.getApplicationContext());
}
return sInstance;
}
diff --git a/src/com/android/camera/app/CameraApp.java b/src/com/android/camera/app/CameraApp.java
index b46d615b0..837e22cd1 100644
--- a/src/com/android/camera/app/CameraApp.java
+++ b/src/com/android/camera/app/CameraApp.java
@@ -22,6 +22,7 @@ import android.app.Application;
import com.android.camera.SDCard;
import com.android.camera.util.CameraUtil;
import com.android.camera.util.UsageStatistics;
+import com.android.camera.SettingsManager;
public class CameraApp extends Application {
private static long mMaxSystemMemory;
@@ -37,6 +38,7 @@ public class CameraApp extends Application {
if(mMaxSystemMemory <= LOW_MEMORY_DEVICE_THRESHOLD) {
mIsLowMemoryDevice = true;
}
+ SettingsManager.createInstance(this);
UsageStatistics.initialize(this);
CameraUtil.initialize(this);
SDCard.initialize(this);
diff --git a/src/com/android/camera/util/CameraUtil.java b/src/com/android/camera/util/CameraUtil.java
index 1cdfd285a..28cb8e3b2 100644
--- a/src/com/android/camera/util/CameraUtil.java
+++ b/src/com/android/camera/util/CameraUtil.java
@@ -124,6 +124,8 @@ public class CameraUtil {
/** Has to be in sync with the receiving MovieActivity. */
public static final String KEY_TREAT_UP_AS_BACK = "treat-up-as-back";
+ /** Judge the value whether is from lockscreen come in or not */
+ public static final String KEY_IS_SECURE_CAMERA = "is_secure_camera";
public static final int RATIO_UNKNOWN = 0;
public static final int RATIO_16_9 = 1;