Add external camera support am: d66d2cfcf2 am: a2ccd8ac06
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Camera2/+/11604391
Change-Id: Ie10c969e4c43eed8b8be08203770df5e084fe987
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 1f13e3e..002bf5f 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -55,6 +55,7 @@
android:launchMode="singleTask"
android:taskAffinity="com.android.camera.CameraActivity"
android:theme="@style/Theme.Camera"
+ android:exported="true"
android:windowSoftInputMode="stateAlwaysHidden|adjustPan" >
<intent-filter>
<action android:name="android.media.action.STILL_IMAGE_CAMERA" />
@@ -83,6 +84,7 @@
<activity-alias
android:name="com.android.camera.CameraLauncher"
android:label="@string/app_name"
+ android:exported="true"
android:targetActivity="com.android.camera.CameraActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
@@ -98,6 +100,7 @@
android:theme="@style/Theme.Camera"
android:configChanges="orientation|screenSize|keyboardHidden"
android:windowSoftInputMode="stateAlwaysHidden|adjustPan"
+ android:exported="true"
android:visibleToInstantApps="true">
<intent-filter>
<action android:name="android.media.action.IMAGE_CAPTURE" />
@@ -109,6 +112,7 @@
<activity-alias
android:name="com.android.camera.VideoCamera"
android:label="@string/video_camera_label"
+ android:exported="true"
android:targetActivity="com.android.camera.CaptureActivity">
<intent-filter>
<action android:name="android.media.action.VIDEO_CAMERA" />
@@ -128,6 +132,7 @@
android:label="@string/app_name"
android:taskAffinity="com.android.camera.SecureCameraActivity"
android:theme="@style/Theme.SecureCamera"
+ android:exported="true"
android:windowSoftInputMode="stateAlwaysHidden|adjustPan" >
<intent-filter>
<action android:name="android.media.action.STILL_IMAGE_CAMERA_SECURE" />
@@ -152,7 +157,8 @@
android:configChanges="keyboardHidden|orientation|screenSize">
</activity>
- <receiver android:name="com.android.camera.DisableCameraReceiver">
+ <receiver android:name="com.android.camera.DisableCameraReceiver"
+ android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java
index 18d87bf..6b81641 100644
--- a/src/com/android/camera/CameraActivity.java
+++ b/src/com/android/camera/CameraActivity.java
@@ -22,6 +22,7 @@
import android.app.ActionBar;
import android.app.Activity;
import android.app.Dialog;
+import android.app.KeyguardManager.KeyguardDismissCallback;
import android.content.ActivityNotFoundException;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
@@ -2513,7 +2514,32 @@
UsageStatistics.instance().controlUsed(
eventprotos.ControlEvent.ControlType.OVERALL_SETTINGS);
Intent intent = new Intent(this, CameraSettingsActivity.class);
- startActivity(intent);
+ if (!isKeyguardLocked()) {
+ startActivity(intent);
+ } else {
+ /* Need to explicitly request keyguard dismissal for PIN/pattern
+ * entry to show up directly. */
+ requestDismissKeyguard(
+ /* requesting Activity: */ CameraActivity.this,
+ new KeyguardDismissCallback() {
+ @Override
+ public void onDismissSucceeded() {
+ /* Need to use launchActivityByIntent() so that going
+ * back from settings after unlock leads to main
+ * activity instead of dismissing camera entirely. */
+ launchActivityByIntent(intent);
+ }
+ @Override
+ public void onDismissError() {
+ Log.e(TAG, "Keyguard dismissal failed.");
+ }
+ @Override
+ public void onDismissCancelled() {
+ Log.d(TAG, "Keyguard dismissal canceled.");
+ }
+ }
+ );
+ }
}
@Override
diff --git a/src/com/android/camera/processing/imagebackend/TaskCompressImageToJpeg.java b/src/com/android/camera/processing/imagebackend/TaskCompressImageToJpeg.java
index c87eab8..7a2caf9 100644
--- a/src/com/android/camera/processing/imagebackend/TaskCompressImageToJpeg.java
+++ b/src/com/android/camera/processing/imagebackend/TaskCompressImageToJpeg.java
@@ -96,8 +96,7 @@
*/
public Map<Integer, Integer> exifGetMinimalTags(ExifInterface exif) {
Map<Integer, Integer> map = new HashMap<>();
- map.put(ExifInterface.TAG_ORIENTATION,
- ExifInterface.getRotationForOrientationValue((short) Exif.getOrientation(exif)));
+ map.put(ExifInterface.TAG_ORIENTATION, Exif.getOrientation(exif));
map.put(ExifInterface.TAG_PIXEL_X_DIMENSION, exif.getTagIntValue(
ExifInterface.TAG_PIXEL_X_DIMENSION));
map.put(ExifInterface.TAG_PIXEL_Y_DIMENSION, exif.getTagIntValue(
diff --git a/src/com/android/camera/util/QuickActivity.java b/src/com/android/camera/util/QuickActivity.java
index 18ea253..5122255 100644
--- a/src/com/android/camera/util/QuickActivity.java
+++ b/src/com/android/camera/util/QuickActivity.java
@@ -224,6 +224,16 @@
return false;
}
+ protected void requestDismissKeyguard(Activity activity,
+ @Nullable KeyguardManager.KeyguardDismissCallback callback) {
+ if (mKeyguardManager == null) {
+ mKeyguardManager = AndroidServices.instance().provideKeyguardManager();
+ }
+ if (mKeyguardManager != null) {
+ mKeyguardManager.requestDismissKeyguard(activity, callback);
+ }
+ }
+
/**
* Subclasses should override this in place of {@link Activity#onNewIntent}.
*/