diff options
author | Weijie Wang <weijiew@codeaurora.org> | 2017-09-05 10:42:58 +0800 |
---|---|---|
committer | Weijie Wang <weijiew@codeaurora.org> | 2017-09-05 11:02:23 +0800 |
commit | b59cf61c82d6c4af43a9f76a101b29f2a8b5ac17 (patch) | |
tree | 02dde6e1d3d923baf4feb2074f8e49c1f4141207 | |
parent | 454d5b45b6b08e9213dc590fa0ebd084b50408fe (diff) | |
download | android_packages_apps_Snap-b59cf61c82d6c4af43a9f76a101b29f2a8b5ac17.tar.gz android_packages_apps_Snap-b59cf61c82d6c4af43a9f76a101b29f2a8b5ac17.tar.bz2 android_packages_apps_Snap-b59cf61c82d6c4af43a9f76a101b29f2a8b5ac17.zip |
SnapdragonCamera: Refactor
1. Add some logs
2. Change the layout of beautify seekbar
3. Add attribute android:visibleToInstantApps="true" for CTS
4. keep capturing until AeState becomes right on chrommaflash mode
Change-Id: I295d5d6f42250254d613123a7d58f7f7fb0e7f3d
-rw-r--r--[-rwxr-xr-x] | AndroidManifest.xml | 70 | ||||
-rw-r--r-- | jni/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.cpp | 2 | ||||
-rw-r--r-- | jni/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.h | 1 | ||||
-rw-r--r-- | proguard.flags | 2 | ||||
-rw-r--r--[-rwxr-xr-x] | res/layout/one_ui_layout.xml | 99 | ||||
-rw-r--r--[-rwxr-xr-x] | res/values/camera2arrays.xml | 2 | ||||
-rw-r--r-- | res/values/strings.xml | 1 | ||||
-rw-r--r-- | src/com/android/camera/CameraActivity.java | 3 | ||||
-rw-r--r-- | src/com/android/camera/CameraSettings.java | 2 | ||||
-rw-r--r--[-rwxr-xr-x] | src/com/android/camera/SettingsManager.java | 2 | ||||
-rw-r--r-- | src/com/android/camera/imageprocessor/FrameProcessor.java | 12 | ||||
-rw-r--r-- | src/com/android/camera/imageprocessor/filter/ChromaflashFilter.java | 60 | ||||
-rw-r--r--[-rwxr-xr-x] | src/com/android/camera/ui/Camera2FaceView.java | 2 | ||||
-rw-r--r-- | src/com/android/camera/util/CameraUtil.java | 4 | ||||
-rw-r--r-- | version.mk | 4 |
15 files changed, 160 insertions, 106 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 1b8a88d2d..92e8b7f35 100755..100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -53,7 +53,8 @@ android:screenOrientation="portrait" android:taskAffinity="com.android.camera.CameraActivity" android:theme="@style/Theme.Camera" - android:windowSoftInputMode="stateAlwaysHidden|adjustPan" > + android:windowSoftInputMode="stateAlwaysHidden|adjustPan" + android:visibleToInstantApps="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.DEFAULT" /> @@ -69,10 +70,32 @@ android:label="@string/app_name" android:launchMode="singleTop" android:configChanges="orientation|screenSize|keyboardHidden" - android:parentActivityName="com.android.camera.CameraActivity" > - <meta-data - android:name="android.support.PARENT_ACTIVITY" - android:value="com.android.camera.CameraActivity" /> + android:parentActivityName="com.android.camera.CameraActivity" + android:visibleToInstantApps="true"> + + <intent-filter> + <action android:name="android.media.action.VIDEO_CAMERA" /> + <category android:name="android.intent.category.DEFAULT" /> + </intent-filter> + + <intent-filter> + <action android:name="android.media.action.VIDEO_CAPTURE" /> + <category android:name="android.intent.category.DEFAULT" /> + </intent-filter> + + <intent-filter> + <action android:name="android.media.action.IMAGE_CAPTURE" /> + <category android:name="android.intent.category.DEFAULT" /> + </intent-filter> + + <intent-filter> + <action android:name="android.media.action.STILL_IMAGE_CAMERA" /> + <category android:name="android.intent.category.DEFAULT" /> + </intent-filter> + + <meta-data + android:name="android.support.PARENT_ACTIVITY" + android:value="com.android.camera.CameraActivity" /> </activity> <activity @@ -110,43 +133,6 @@ </intent-filter> </activity-alias> - <activity-alias - android:name="com.android.camera.PhotoCamera" - android:icon="@mipmap/ic_launcher_camera" - android:label="@string/snapcam_app_name" - android:launchMode="singleTop" - android:targetActivity="com.android.camera.PermissionsActivity"> - <intent-filter> - <action android:name="android.media.action.IMAGE_CAPTURE" /> - <category android:name="android.intent.category.DEFAULT" /> - </intent-filter> - <intent-filter> - <action android:name="android.media.action.STILL_IMAGE_CAMERA" /> - <category android:name="android.intent.category.DEFAULT" /> - </intent-filter> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.DEFAULT" /> - </intent-filter> - </activity-alias> - - <!-- Video camera and capture use the Camcorder label and icon. --> - <activity-alias - android:name="com.android.camera.VideoCamera" - android:icon="@mipmap/ic_launcher_video_camera" - android:label="@string/video_camera_label" - android:launchMode="singleTop" - android:targetActivity="com.android.camera.PermissionsActivity"> - <intent-filter> - <action android:name="android.media.action.VIDEO_CAMERA" /> - <category android:name="android.intent.category.DEFAULT" /> - </intent-filter> - <intent-filter> - <action android:name="android.media.action.VIDEO_CAPTURE" /> - <category android:name="android.intent.category.DEFAULT" /> - </intent-filter> - </activity-alias> - <activity android:name="com.android.camera.SecureCameraActivity" android:clearTaskOnLaunch="true" diff --git a/jni/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.cpp b/jni/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.cpp index 4725463f2..2a7a1c2a0 100644 --- a/jni/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.cpp +++ b/jni/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.cpp @@ -16,7 +16,9 @@ #include "SurfaceTextureRenderer.h" +#include <string.h> #include <GLES2/gl2ext.h> + const GLfloat g_vVertices[] = { -1.f, -1.f, 0.0f, 1.0f, // Position 0 0.0f, 0.0f, // TexCoord 0 diff --git a/jni/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.h b/jni/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.h index 9dbe9eb48..ea2b81ade 100644 --- a/jni/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.h +++ b/jni/feature_mos/src/mosaic_renderer/SurfaceTextureRenderer.h @@ -8,7 +8,6 @@ #include <stdint.h> #include <stdio.h> #include <stdlib.h> -#include <string.h> class SurfaceTextureRenderer: public Renderer { public: diff --git a/proguard.flags b/proguard.flags index 9d477262a..522c66444 100644 --- a/proguard.flags +++ b/proguard.flags @@ -3,6 +3,7 @@ #Avoid the library class dependency error -dontwarn android.view.inputmethod.InputMethodManager -dontwarn android.content.res.Resources +-dontwarn com.android.internal.widget.ViewInfoStore$InfoRecord # ctors of subclasses of CameraPreference are called with Java reflection. -keep class * extends com.android.camera.CameraPreference { @@ -57,3 +58,4 @@ } -keep class android.renderscript.** { *; } + diff --git a/res/layout/one_ui_layout.xml b/res/layout/one_ui_layout.xml index 5904b5b96..59e31b95d 100755..100644 --- a/res/layout/one_ui_layout.xml +++ b/res/layout/one_ui_layout.xml @@ -133,15 +133,48 @@ style="@style/OneUIMenuButton" /> <LinearLayout + android:id="@+id/remaining_photos" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@android:color/transparent" + android:orientation="horizontal" + android:visibility="gone"> + + <TextView + android:id="@+id/remaining_photos_text" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@android:color/transparent" + android:textColor="@android:color/white" + android:visibility="gone" /> + + <ImageView + android:id="@+id/remaining_photos_image" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:src="@drawable/remaining_sheets" + android:visibility="gone" /> + </LinearLayout> + + <include layout="@layout/pro_mode_layout" /> + + <ImageView + android:id="@+id/promode_close_button" + android:layout_height="20dp" + android:layout_width="20dp" + android:src="@drawable/icon_x" /> + + <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/makeup_seekbar_layout" android:visibility="gone"> <ImageView - android:layout_width="12dp" - android:layout_height="20dp" - android:layout_marginLeft="23dp" - android:layout_marginRight="23dp" + android:layout_width="30dp" + android:layout_height="40dp" + android:layout_marginLeft="20dp" + android:layout_marginRight="10dp" + android:src="@drawable/seekbar_hide" android:id="@+id/seekbar_toggle"> </ImageView> <RelativeLayout @@ -149,8 +182,8 @@ android:layout_height="wrap_content" android:id="@+id/seekbar_body"> <com.android.camera.ui.RotateLayout - android:layout_width="24dp" - android:layout_height="24dp" + android:layout_width="30dp" + android:layout_height="40dp" android:layout_alignParentLeft="true" android:id="@+id/makeup_low_text"> <TextView @@ -163,18 +196,18 @@ </TextView> </com.android.camera.ui.RotateLayout> <SeekBar - android:layout_width="220dp" - android:layout_height="wrap_content" - android:maxHeight="3dip" - android:minHeight="1dip" - android:layout_marginLeft="10dp" - android:layout_toRightOf="@+id/makeup_low_text" - android:progressDrawable="@drawable/beautify_progressbar_style" - android:thumb="@drawable/ic_beautify_oval" - android:id="@+id/makeup_seekbar"/> + android:layout_width="220dp" + android:layout_height="40dp" + android:maxHeight="3dip" + android:minHeight="1dip" + android:layout_marginLeft="10dp" + android:layout_toRightOf="@+id/makeup_low_text" + android:progressDrawable="@drawable/beautify_progressbar_style" + android:thumb="@drawable/ic_beautify_oval" + android:id="@+id/makeup_seekbar"/> <com.android.camera.ui.RotateLayout - android:layout_width="24dp" - android:layout_height="24dp" + android:layout_width="30dp" + android:layout_height="40dp" android:layout_toRightOf="@+id/makeup_seekbar" android:layout_marginLeft="10dp" android:id="@+id/makeup_high_text"> @@ -189,36 +222,4 @@ </com.android.camera.ui.RotateLayout> </RelativeLayout> </LinearLayout> - - <LinearLayout - android:id="@+id/remaining_photos" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:background="@android:color/transparent" - android:orientation="horizontal" - android:visibility="gone"> - - <TextView - android:id="@+id/remaining_photos_text" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:background="@android:color/transparent" - android:textColor="@android:color/white" - android:visibility="gone" /> - - <ImageView - android:id="@+id/remaining_photos_image" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:src="@drawable/remaining_sheets" - android:visibility="gone" /> - </LinearLayout> - - <include layout="@layout/pro_mode_layout" /> - - <ImageView - android:id="@+id/promode_close_button" - android:layout_height="20dp" - android:layout_width="20dp" - android:src="@drawable/icon_x" /> </com.android.camera.ui.OneUICameraControls> diff --git a/res/values/camera2arrays.xml b/res/values/camera2arrays.xml index b6cf25f2e..7f4b0da26 100755..100644 --- a/res/values/camera2arrays.xml +++ b/res/values/camera2arrays.xml @@ -431,7 +431,7 @@ <item>@string/pref_camera_picturesize_entry_16mp_wide</item> <item>@string/pref_camera_picturesize_entry_13mp</item> <item>@string/pref_camera_picturesize_entry_12mp</item> - <item>@string/pref_camera_picturesize_entry_8mp</item> + <item>@string/pref_camera_picturesize_entry_8mp_wide</item> <item>@string/pref_camera_picturesize_entry_8mp</item> <item>@string/pref_camera_picturesize_entry_square</item> <item>@string/pref_camera_picturesize_entry_5mp</item> diff --git a/res/values/strings.xml b/res/values/strings.xml index 0b2310439..42ad07272 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -296,6 +296,7 @@ <string name="pref_camera_picturesize_entry_12mp">12M pixels</string> <!-- Settings screen, dialog choice for 8 megapixels picture size [CHAR LIMIT=20] --> <string name="pref_camera_picturesize_entry_8mp">8M pixels</string> + <string name="pref_camera_picturesize_entry_8mp_wide">8M pixels (16:9)</string> <!-- Settings screen, dialog choice for square picture size [CHAR LIMIT=20] --> <string name="pref_camera_picturesize_entry_square">Square (1:1)</string> <!-- Settings screen, dialog choice for 5 megapixels picture size [CHAR LIMIT=20] --> diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java index 7f155cbd7..ca78ba969 100644 --- a/src/com/android/camera/CameraActivity.java +++ b/src/com/android/camera/CameraActivity.java @@ -129,7 +129,7 @@ public class CameraActivity extends Activity ActionBar.OnMenuVisibilityListener, ShareActionProvider.OnShareTargetSelectedListener { - private static final String TAG = "CAM_Activity"; + private static final String TAG = "CAM_Activity"; private static final String INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE = "android.media.action.STILL_IMAGE_CAMERA_SECURE"; @@ -1467,7 +1467,6 @@ public class CameraActivity extends Activity } else { mSecureCamera = intent.getBooleanExtra(SECURE_CAMERA_EXTRA, false); } - if (mSecureCamera) { // Change the window flags so that secure camera can show when locked Window win = getWindow(); diff --git a/src/com/android/camera/CameraSettings.java b/src/com/android/camera/CameraSettings.java index 44f3978f5..541c65704 100644 --- a/src/com/android/camera/CameraSettings.java +++ b/src/com/android/camera/CameraSettings.java @@ -982,6 +982,8 @@ public class CameraSettings { supportedAdvancedFeatures)) { removePreference(group, chromaFlash.getKey()); } + //remove chromaFlash + removePreference(group, chromaFlash.getKey()); } if (sceneMode != null) { diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java index c0a545426..af796c6a7 100755..100644 --- a/src/com/android/camera/SettingsManager.java +++ b/src/com/android/camera/SettingsManager.java @@ -1397,7 +1397,9 @@ public class SettingsManager implements ListMenu.SettingsListener { modes.add("" + i); } } catch(NullPointerException e) { + Log.w(TAG, "Supported instant aec modes is null."); } catch(IllegalArgumentException e) { + Log.w(TAG, "Supported instant aec modes is null."); } return modes; diff --git a/src/com/android/camera/imageprocessor/FrameProcessor.java b/src/com/android/camera/imageprocessor/FrameProcessor.java index b1b415acd..6b0c97732 100644 --- a/src/com/android/camera/imageprocessor/FrameProcessor.java +++ b/src/com/android/camera/imageprocessor/FrameProcessor.java @@ -401,7 +401,11 @@ public class FrameProcessor { } } else { filter.init(mSize.getWidth(), mSize.getHeight(), stride, stride); - filter.addImage(bY, bVU, 0, new Boolean(true)); + if (filter instanceof BeautificationFilter) { + filter.addImage(bY, bVU, 0, new Boolean(false)); + } else { + filter.addImage(bY, bVU, 0, new Boolean(true)); + } needToFeedSurface = true; } bY.rewind(); @@ -485,7 +489,11 @@ public class FrameProcessor { mBY.rewind(); mBVU.rewind(); mFilter.init(mWidth, mHeight, mStride, mStride); - mFilter.addImage(mBY, mBVU, 0, new Boolean(true)); + if (mFilter instanceof BeautificationFilter) { + mFilter.addImage(mBY, mBVU, 0, new Boolean(false)); + } else { + mFilter.addImage(mBY, mBVU, 0, new Boolean(true)); + } mMutureLock.release(); } catch (InterruptedException e) { } diff --git a/src/com/android/camera/imageprocessor/filter/ChromaflashFilter.java b/src/com/android/camera/imageprocessor/filter/ChromaflashFilter.java index 607908ebf..4682e3947 100644 --- a/src/com/android/camera/imageprocessor/filter/ChromaflashFilter.java +++ b/src/com/android/camera/imageprocessor/filter/ChromaflashFilter.java @@ -32,8 +32,10 @@ import android.graphics.Rect; import android.hardware.camera2.CameraAccessException; import android.hardware.camera2.CameraCaptureSession; import android.hardware.camera2.CameraCharacteristics; +import android.hardware.camera2.CameraDevice; import android.hardware.camera2.CaptureRequest; import android.hardware.camera2.CaptureResult; +import android.hardware.camera2.TotalCaptureResult; import android.os.Handler; import android.util.Log; @@ -155,20 +157,33 @@ public class ChromaflashFilter implements ImageFilter{ for (int i = 0; i < NUM_REQUIRED_IMAGE; i++) { if (i == 0) { captureSession.capture(builder.build(), callback, handler); + waitForImage(i); } else if (i == 1) { //To change the setting builder.set(CaptureRequest.CONTROL_AE_LOCK, Boolean.FALSE); + builder.set(CaptureRequest.FLASH_MODE, + CaptureRequest.FLASH_MODE_SINGLE); captureSession.capture(builder.build(), callback, handler); waitForImage(i); } else if (i == 2) { //To change the setting - builder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON); - builder.set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_SINGLE); - builder.set(CaptureRequest.CONTROL_AE_LOCK, Boolean.TRUE); - captureSession.capture(builder.build(), callback, handler); - waitForImage(i); + builder.set(CaptureRequest.CONTROL_AE_MODE, + CaptureRequest.CONTROL_AE_MODE_ON); + CaptureRequest.Builder AeTunningBuilder = captureSession.getDevice(). + createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW); + CaptureRequest request = builder.build(); + for (CaptureRequest.Key key : request.getKeys()) { + AeTunningBuilder.set(key, request.get(key)); + } + AeTunningBuilder.addTarget(mModule.getPreviewSurfaceForSession( + mModule.getMainCameraId())); + + waitForAeBlock(AeTunningBuilder,builder,callback, + captureSession,handler,5); } else if (i == 3) { captureSession.capture(builder.build(), callback, handler); + waitForImage(i); } else if (i == 4) { //To change the setting builder.set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_OFF); + builder.set(CaptureRequest.CONTROL_AE_LOCK, Boolean.FALSE); captureSession.capture(builder.build(), callback, handler); waitForImage(i); } else if (i == 5) { @@ -190,6 +205,41 @@ public class ChromaflashFilter implements ImageFilter{ } } + private void waitForAeBlock(final CaptureRequest.Builder tuningBuilder, + final CaptureRequest.Builder captureBuilder, + final CameraCaptureSession.CaptureCallback callback, + final CameraCaptureSession captureSession, + final Handler handler, final int AeTunningTime) { + try{ + captureSession.capture(tuningBuilder.build(), + new CameraCaptureSession.CaptureCallback() { + private boolean mAeStateConverged = false; + + @Override + public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request, + TotalCaptureResult result) { + Integer aeState = result.get(CaptureResult.CONTROL_AE_STATE); + Log.d(TAG,"AE tunning onCaptureCompleted aeState = " + aeState); + if (aeState != null && aeState == CaptureResult.CONTROL_AE_STATE_CONVERGED) { + mAeStateConverged = true; + } + Log.d(TAG,"AE tunning completed mAeStateConverged = " + mAeStateConverged); + if(!mAeStateConverged && AeTunningTime >= 2) { + int resetTime = AeTunningTime - 1; + waitForAeBlock(tuningBuilder,captureBuilder,callback, + captureSession,handler,resetTime); + } else { + try{ + captureSession.capture(captureBuilder.build(),callback,handler); + } catch (CameraAccessException e){} + } + } + }, handler); + }catch (CameraAccessException e){ + + } + } + public static boolean isSupportedStatic() { return mIsSupported; } diff --git a/src/com/android/camera/ui/Camera2FaceView.java b/src/com/android/camera/ui/Camera2FaceView.java index 3b6d10541..81be61f81 100755..100644 --- a/src/com/android/camera/ui/Camera2FaceView.java +++ b/src/com/android/camera/ui/Camera2FaceView.java @@ -151,7 +151,9 @@ public class Camera2FaceView extends FaceView { faceBound.offset(-mCameraBound.left, -mCameraBound.top); mRect.set(faceBound); translateMatrix.mapRect(mRect); + if (LOGV) CameraUtil.dumpRect(mRect, "Original rect"); mMatrix.mapRect(mRect); + if (LOGV) CameraUtil.dumpRect(mRect, "Transformed rect"); mPaint.setColor(mColor); mRect.offset(dx, dy); diff --git a/src/com/android/camera/util/CameraUtil.java b/src/com/android/camera/util/CameraUtil.java index 3b0d5e6ac..d6c1956d9 100644 --- a/src/com/android/camera/util/CameraUtil.java +++ b/src/com/android/camera/util/CameraUtil.java @@ -526,8 +526,8 @@ public class CameraUtil { //For < 720p, there is no need to do any capping. //By capping the panel size, we are indirectly controlling the preview size being //chosen in getOptimalPreviewSize(). - String uMax = SystemProperties.get("camera.display.umax", ""); - String lMax = SystemProperties.get("camera.display.lmax", ""); + String uMax = PersistUtil.getDisplayUMax(); + String lMax = PersistUtil.getDisplayLMax(); if ((uMax.length() > 0) && (lMax.length() > 0)) { Log.v(TAG,"display uMax "+ uMax + " lMax " + lMax); String uMaxArr[] = uMax.split("x", 2); diff --git a/version.mk b/version.mk index 869c764ad..b9926f8b1 100644 --- a/version.mk +++ b/version.mk @@ -85,10 +85,10 @@ version_code_package := $(base_version_major)$(base_version_minor)$(base_version # On eng builds, the BUILD_NUMBER has the user and timestamp inline ifneq "" "$(filter eng.%,$(BUILD_NUMBER))" git_hash := $(shell git --git-dir $(LOCAL_PATH)/.git log -n 1 --pretty=format:%h) - date_string := $(shell date +%m%d%y_%H%M%S) + date_string := $$(date +%m%d%y_%H%M%S) version_name_package := $(base_version_major).$(base_version_minor).$(base_version_build) (eng.$(USER).$(git_hash).$(date_string)-$(base_version_arch)$(base_version_density)) else - version_name_package := $(base_version_major).$(base_version_minor).$(base_version_build) ($(BUILD_NUMBER)-$(base_version_arch)$(base_version_density)) + version_name_package := $(base_version_major).$(base_version_minor).$(base_version_build) ($(BUILD_NUMBER_FROM_FILE)-$(base_version_arch)$(base_version_density)) endif # Cleanup the locals |