diff options
-rwxr-xr-x[-rw-r--r--] | AndroidManifest.xml | 4 | ||||
-rwxr-xr-x | res/layout/capture_module.xml | 13 | ||||
-rwxr-xr-x | src/com/android/camera/CameraActivity.java | 3 | ||||
-rwxr-xr-x | src/com/android/camera/CameraHolder.java | 5 | ||||
-rwxr-xr-x | src/com/android/camera/CaptureModule.java | 39 | ||||
-rwxr-xr-x | src/com/android/camera/CaptureUI.java | 3 | ||||
-rwxr-xr-x | src/com/android/camera/SettingsActivity.java | 46 | ||||
-rwxr-xr-x | src/com/android/camera/SettingsManager.java | 83 | ||||
-rwxr-xr-x | src/com/android/camera/imageprocessor/FrameProcessor.java | 15 | ||||
-rwxr-xr-x[-rw-r--r--] | src/com/android/camera/ui/FlashToggleButton.java | 15 | ||||
-rwxr-xr-x | src/com/android/camera/ui/OneUICameraControls.java | 1 | ||||
-rwxr-xr-x | version.mk | 2 |
12 files changed, 188 insertions, 41 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 678a903e2..a2102c38b 100644..100755 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -72,21 +72,25 @@ <intent-filter> <action android:name="android.media.action.VIDEO_CAMERA" /> <category android:name="android.intent.category.DEFAULT" /> + <category android:name="android.intent.category.VOICE"/> </intent-filter> <intent-filter> <action android:name="android.media.action.VIDEO_CAPTURE" /> <category android:name="android.intent.category.DEFAULT" /> + <category android:name="android.intent.category.VOICE"/> </intent-filter> <intent-filter> <action android:name="android.media.action.IMAGE_CAPTURE" /> <category android:name="android.intent.category.DEFAULT" /> + <category android:name="android.intent.category.VOICE"/> </intent-filter> <intent-filter> <action android:name="android.media.action.STILL_IMAGE_CAMERA" /> <category android:name="android.intent.category.DEFAULT" /> + <category android:name="android.intent.category.VOICE"/> </intent-filter> <meta-data diff --git a/res/layout/capture_module.xml b/res/layout/capture_module.xml index 8600ddd73..7ebaee660 100755 --- a/res/layout/capture_module.xml +++ b/res/layout/capture_module.xml @@ -169,6 +169,19 @@ android:layout_width="match_parent" android:layout_height="match_parent" /> + <TextView + android:id="@+id/zoom_switch" + android:layout_width="1dp" + android:layout_height="1dp" + android:layout_gravity="center_vertical|right" + android:layout_marginRight="20dp" + android:text="1x" + android:textColor="@android:color/transparent" + android:alpha="0.7" + android:gravity="center" + android:clickable="true" + android:background="#00000000" + android:textSize="12sp"/> <FrameLayout android:layout_width="match_parent" diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java index f92f7b206..37ed7f1c2 100755 --- a/src/com/android/camera/CameraActivity.java +++ b/src/com/android/camera/CameraActivity.java @@ -681,7 +681,8 @@ public class CameraActivity extends Activity View decorView = getWindow().getDecorView(); int currentSystemUIVisibility = decorView.getSystemUiVisibility(); int systemUIVisibility = DEFAULT_SYSTEM_UI_VISIBILITY; - int systemUINotVisible = View.SYSTEM_UI_FLAG_LOW_PROFILE | View.SYSTEM_UI_FLAG_FULLSCREEN; + int systemUINotVisible = View.SYSTEM_UI_FLAG_LOW_PROFILE | View.SYSTEM_UI_FLAG_FULLSCREEN | + View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; int newSystemUIVisibility = systemUIVisibility | (visible ? View.SYSTEM_UI_FLAG_VISIBLE : systemUINotVisible); diff --git a/src/com/android/camera/CameraHolder.java b/src/com/android/camera/CameraHolder.java index 4daf84320..8ecc672f9 100755 --- a/src/com/android/camera/CameraHolder.java +++ b/src/com/android/camera/CameraHolder.java @@ -24,6 +24,7 @@ import android.hardware.Camera.CameraInfo; import android.hardware.Camera.Parameters; import android.hardware.camera2.CameraAccessException; import android.hardware.camera2.CameraCharacteristics; +import android.hardware.camera2.CameraMetadata; import android.os.Build; import android.os.Handler; import android.os.HandlerThread; @@ -186,10 +187,10 @@ public class CameraHolder { = manager.getCameraCharacteristics(cameraId); Log.d(TAG,"cameraIdList size ="+cameraIdList.length); int facing = characteristics.get(CameraCharacteristics.LENS_FACING); - if (facing == CameraCharacteristics.LENS_FACING_FRONT) { + if (mFrontCameraId == -1 && facing == CameraCharacteristics.LENS_FACING_FRONT) { CaptureModule.FRONT_ID = i; mFrontCameraId = i; - } else if (mBackCameraId != -1) { + } else if (mBackCameraId != -1 && facing == CameraMetadata.LENS_FACING_BACK) { mBackCameraId = i; } addCameraInfo(i, characteristics); diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java index 5cd971598..b0fe08000 100755 --- a/src/com/android/camera/CaptureModule.java +++ b/src/com/android/camera/CaptureModule.java @@ -839,6 +839,8 @@ public class CaptureModule implements CameraModule, PhotoController, SettingsManager.KEY_STATS_VISUALIZER_VALUE); if (stats_visualizer != null) { updateStatsView(stats_visualizer,result); + } else { + mUI.updateAWBInfoVisibility(View.GONE); } } }; @@ -1890,7 +1892,8 @@ public class CaptureModule implements CameraModule, PhotoController, if (myExtras != null) { mSaveUri = (Uri) myExtras.getParcelable(MediaStore.EXTRA_OUTPUT); mCropValue = myExtras.getString("crop"); - mUseFrontCamera = myExtras.getBoolean("android.intent.extra.USE_FRONT_CAMERA", false); + mUseFrontCamera = myExtras.getBoolean("android.intent.extra.USE_FRONT_CAMERA", false) || + myExtras.getBoolean("com.google.assistant.extra.USE_FRONT_CAMERA", false); mTimer = myExtras.getInt("android.intent.extra.TIMER_DURATION_SECONDS", 0); Log.d(TAG, "mUseFrontCamera :" + mUseFrontCamera + ", mTimer :" + mTimer); } @@ -2379,6 +2382,7 @@ public class CaptureModule implements CameraModule, PhotoController, if (mLongshotActive) { checkAndPlayShutterSound(getMainCameraId()); } + mLongshoting = false; } @Override @@ -2404,6 +2408,7 @@ public class CaptureModule implements CameraModule, PhotoController, CaptureRequest request, CaptureFailure result) { Log.d(TAG, "captureStillPictureForLongshot onCaptureFailed."); + mLongshoting = false; } @Override @@ -2497,6 +2502,7 @@ public class CaptureModule implements CameraModule, PhotoController, } else { enableShutterAndVideoOnUiThread(id); } + Log.d(TAG,"onShutterButtonRelease"); if (mSettingsManager.getSavePictureFormat() == SettingsManager.HEIF_FORMAT) { if (mHeifImage != null) { try { @@ -2963,7 +2969,7 @@ public class CaptureModule implements CameraModule, PhotoController, CaptureRequest.CONTROL_AF_MODE_OFF : afMode); mTakingPicture[id] = false; enableShutterAndVideoOnUiThread(id); - } catch (NullPointerException | IllegalStateException | CameraAccessException e) { + } catch (NullPointerException | IllegalStateException | CameraAccessException | IllegalArgumentException e) { Log.w(TAG, "Session is already closed"); } } @@ -3001,7 +3007,7 @@ public class CaptureModule implements CameraModule, PhotoController, } } - private boolean isMFNREnabled() { + public boolean isMFNREnabled() { boolean mfnrEnable = false; if (mSettingsManager != null) { String mfnrValue = mSettingsManager.getValue(SettingsManager.KEY_CAPTURE_MFNR_VALUE); @@ -3143,7 +3149,7 @@ public class CaptureModule implements CameraModule, PhotoController, } catch (InterruptedException e) { mCameraOpenCloseLock.release(); throw new RuntimeException("Interrupted while trying to lock camera closing.", e); - } catch (CameraAccessException e) { + } catch (CameraAccessException | IllegalStateException e) { e.printStackTrace(); } finally { mCameraOpenCloseLock.release(); @@ -3997,7 +4003,8 @@ public class CaptureModule implements CameraModule, PhotoController, if (scene == null) return false; int mode = Integer.parseInt(scene); if (mode != CaptureRequest.CONTROL_SCENE_MODE_DISABLED - && mode < SettingsManager.SCENE_MODE_CUSTOM_START) + && mode < SettingsManager.SCENE_MODE_CUSTOM_START + && mode != SettingsManager.SCENE_MODE_HDR_INT) return true; return false; } @@ -5048,17 +5055,16 @@ public class CaptureModule implements CameraModule, PhotoController, applyVideoFlash(mVideoPausePreviewRequestBuilder); CaptureRequest captureRequest = null; try { - if (mMediaRecorderPausing) { - captureRequest = mVideoPausePreviewRequestBuilder.build(); - } else { - captureRequest = mVideoRequestBuilder.build(); - } + captureRequest = mVideoRequestBuilder.build(); if (mCurrentSession instanceof CameraConstrainedHighSpeedCaptureSession) { CameraConstrainedHighSpeedCaptureSession session = (CameraConstrainedHighSpeedCaptureSession) mCurrentSession; List requestList = session.createHighSpeedRequestList(captureRequest); session.setRepeatingBurst(requestList, mCaptureCallback, mCameraHandler); } else { + if (mMediaRecorderPausing) { + captureRequest = mVideoPausePreviewRequestBuilder.build(); + } mCurrentSession.setRepeatingRequest(captureRequest, mCaptureCallback, mCameraHandler); } @@ -5186,7 +5192,13 @@ public class CaptureModule implements CameraModule, PhotoController, boolean noNeedEndOfStreamInHFR = mHighSpeedCapture && ((int)mHighSpeedFPSRange.getUpper() >= HIGH_SESSION_MAX_FPS); if (noNeedEndofStreamWhenPause || noNeedEndOfStreamInHFR) { - mMediaRecorder.pause(); + try{ + mMediaRecorder.pause(); + } catch (IllegalStateException e){ + e.printStackTrace(); + mMediaRecorderPausing = false; + } + } else { setEndOfStream(false, false); } @@ -5508,12 +5520,12 @@ public class CaptureModule implements CameraModule, PhotoController, if (mCaptureTimeLapse) { size = CameraSettings.getTimeLapseQualityFor(size); } - Bundle myExtras = intent.getExtras(); if (mMediaRecorder == null) mMediaRecorder = new MediaRecorder(); updateHFRSetting(); + mHighSpeedCapture = mHighSpeedCapture && (myExtras == null); //MMS not support high speed boolean hfr = mHighSpeedCapture && !mHighSpeedRecordingMode; if (CamcorderProfile.hasProfile(cameraId, size)) { @@ -5646,7 +5658,6 @@ public class CaptureModule implements CameraModule, PhotoController, if (requestedSizeLimit > 0 && requestedSizeLimit < maxFileSize) { maxFileSize = requestedSizeLimit; } - if (Storage.isSaveSDCard() && maxFileSize > SDCARD_SIZE_LIMIT) { maxFileSize = SDCARD_SIZE_LIMIT; } @@ -5709,6 +5720,7 @@ public class CaptureModule implements CameraModule, PhotoController, + mActivity.getStorageSpaceBytes()); return; } + Log.d(TAG,"onShutterButtonClick"); if (mIsRecordingVideo) { if (mUI.isShutterEnabled()) { @@ -6090,6 +6102,7 @@ public class CaptureModule implements CameraModule, PhotoController, int colorTempValue = Integer.parseInt(pref.getString( SettingsManager.KEY_MANUAL_WB_TEMPERATURE_VALUE, "-1")); if (colorTempValue != -1) { + request.set(CaptureRequest.CONTROL_AWB_MODE, CaptureRequest.CONTROL_AWB_MODE_OFF); VendorTagUtil.setWbColorTemperatureValue(request, colorTempValue); } } else if (manualWBMode.equals(gainMode)) { diff --git a/src/com/android/camera/CaptureUI.java b/src/com/android/camera/CaptureUI.java index ef0e5fdbe..51138a2ec 100755 --- a/src/com/android/camera/CaptureUI.java +++ b/src/com/android/camera/CaptureUI.java @@ -688,6 +688,9 @@ public class CaptureUI implements PreviewGestures.SingleTapListener, mSurfaceViewMono.setVisibility(View.GONE); } } + if(mModule.isMFNREnabled() && mModule.getMainCameraId() == android.hardware.Camera.CameraInfo.CAMERA_FACING_FRONT){ + mFilterModeSwitcher.setVisibility(View.INVISIBLE); + } } public void initializeProMode(boolean promode) { diff --git a/src/com/android/camera/SettingsActivity.java b/src/com/android/camera/SettingsActivity.java index cdfb9d625..a06dc5c20 100755 --- a/src/com/android/camera/SettingsActivity.java +++ b/src/com/android/camera/SettingsActivity.java @@ -115,7 +115,10 @@ public class SettingsActivity extends PreferenceActivity { Map<String, SettingsManager.Values> map = mSettingsManager.getValuesMap(); for( SettingsManager.SettingState state : settings) { SettingsManager.Values values = map.get(state.key); - boolean enabled = values.overriddenValue == null; + boolean enabled = false; + if (values != null) { + enabled = values.overriddenValue == null; + } Preference pref = findPreference(state.key); if ( pref == null ) return; @@ -143,13 +146,27 @@ public class SettingsActivity extends PreferenceActivity { pref, "Off", "0"); } + if ((pref.getKey().equals(SettingsManager.KEY_ZSL) || + pref.getKey().equals(SettingsManager.KEY_PICTURE_FORMAT)) || + pref.getKey().equals(SettingsManager.KEY_SELFIEMIRROR)) { + updateFormatPreference(); + } + if ( (pref.getKey().equals(SettingsManager.KEY_MANUAL_WB)) ) { updateManualWBSettings(); } + + if (pref.getKey().equals(SettingsManager.KEY_DIS) || + pref.getKey().equals(SettingsManager.KEY_EIS_VALUE)) { + mSettingsManager.filterEISVideQualityOptions(); + updatePreference(SettingsManager.KEY_VIDEO_QUALITY); + } + } } }; + /** * This method is to enable or disable the option which is conflict with changed setting * @param conflictKey key you want to change after setting is changed @@ -169,6 +186,29 @@ public class SettingsActivity extends PreferenceActivity { } } + private void updateFormatPreference() { + ListPreference formatPref = (ListPreference)findPreference(SettingsManager.KEY_PICTURE_FORMAT); + ListPreference ZSLPref = (ListPreference) findPreference(SettingsManager.KEY_ZSL); + ListPreference mfnrPref = (ListPreference) findPreference(SettingsManager.KEY_CAPTURE_MFNR_VALUE); + SwitchPreference selfiePref = (SwitchPreference) findPreference(SettingsManager.KEY_SELFIEMIRROR); + if (formatPref == null) { + return; + } + if((ZSLPref != null && "app-zsl".equals(ZSLPref.getValue())) || + (selfiePref != null && selfiePref.isChecked())){ + formatPref.setValue("0"); + formatPref.setEnabled(false); + if (mfnrPref != null) { + mfnrPref.setEnabled(false); + } + } else { + formatPref.setEnabled(true); + if (mfnrPref != null) { + mfnrPref.setEnabled(true); + } + } + } + private void UpdateManualExposureSettings() { //dismiss all popups first, because we need to show edit dialog int cameraId = mSettingsManager.getCurrentCameraId(); @@ -783,14 +823,14 @@ public class SettingsActivity extends PreferenceActivity { pref.setEntries(mSettingsManager.getEntries(key)); pref.setEntryValues(mSettingsManager.getEntryValues(key)); String values = mSettingsManager.getValue(key); + Set<String> valueSet = new HashSet<String>(); if (values != null) { - Set<String> valueSet = new HashSet<String>(); String[] splitValues = values.split(";"); for (String str : splitValues) { valueSet.add(str); } - pref.setValues(valueSet); } + pref.setValues(valueSet); } } } diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java index febba2bf1..5b4bb8c68 100755 --- a/src/com/android/camera/SettingsManager.java +++ b/src/com/android/camera/SettingsManager.java @@ -1243,6 +1243,27 @@ public class SettingsManager implements ListMenu.SettingsListener { } } + private boolean getEISEnabled() { + boolean result = false; + ListPreference disPref = mPreferenceGroup.findPreference(KEY_DIS); + ListPreference eisPref = mPreferenceGroup.findPreference(KEY_EIS_VALUE); + if (disPref != null && eisPref != null) { + result = ("on".equals(disPref.getValue()) && + !("disable".equals(eisPref.getValue()))); + } + return result; + } + + public void filterEISVideQualityOptions() { + ListPreference videoQualityPref = mPreferenceGroup.findPreference(KEY_VIDEO_QUALITY); + if (videoQualityPref == null) return; + videoQualityPref.reloadInitialEntriesAndEntryValues(); + if (filterUnsupportedOptions(videoQualityPref, getSupportedVideoSize( + getCurrentCameraId()))) { + mFilteredKeys.add(videoQualityPref.getKey()); + } + } + private void filterChromaflashPictureSizeOptions() { String scene = getValue(SettingsManager.KEY_SCENE_MODE); ListPreference picturePref = mPreferenceGroup.findPreference(KEY_PICTURE_SIZE); @@ -1691,10 +1712,26 @@ public class SettingsManager implements ListMenu.SettingsListener { res.add(getSupportedQcfaDimension(cameraId)); } + VideoCapabilities heifCap = null; + if (isHeifEnabled) { + MediaCodecList list = new MediaCodecList(MediaCodecList.REGULAR_CODECS); + for (MediaCodecInfo info :list.getCodecInfos()) { + if (info.isEncoder() && info.getName().contains("heic")){ + heifCap = info.getCapabilitiesForType( + MediaFormat.MIMETYPE_IMAGE_ANDROID_HEIC).getVideoCapabilities(); + Log.d(TAG,"supported heif height range ="+heifCap.getSupportedHeights().toString() + + " width range ="+heifCap.getSupportedWidths().toString()); + } + } + } + if (sizes != null) { for (int i = 0; i < sizes.length; i++) { - if (isHeifEnabled && (Math.min(sizes[i].getWidth(),sizes[i].getHeight()) < 512)) { - continue; + if (isHeifEnabled && heifCap != null ){ + if (!heifCap.getSupportedWidths().contains(sizes[i].getWidth()) || + !heifCap.getSupportedHeights().contains(sizes[i].getHeight())){ + continue; + } } if (isDeepportrait && (Math.min(sizes[i].getWidth(),sizes[i].getHeight()) < 720 || @@ -1707,8 +1744,15 @@ public class SettingsManager implements ListMenu.SettingsListener { } Size[] highResSizes = map.getHighResolutionOutputSizes(ImageFormat.JPEG); + if (highResSizes != null) { for (int i = 0; i < highResSizes.length; i++) { + if (isHeifEnabled && heifCap != null) { + if (!heifCap.getSupportedWidths().contains(highResSizes[i].getWidth()) || + !heifCap.getSupportedHeights().contains(highResSizes[i].getHeight())){ + continue; + } + } res.add(highResSizes[i].toString()); } } @@ -1730,18 +1774,46 @@ public class SettingsManager implements ListMenu.SettingsListener { public Size[] getSupportedOutputSize(int cameraId, Class cl) { StreamConfigurationMap map = mCharacteristics.get(cameraId).get( CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP); - return map.getOutputSizes(cl); + Size[] normal = map.getOutputSizes(cl); + Size[] high = map.getHighResolutionOutputSizes(ImageFormat.PRIVATE); + Size[] ret = new Size[normal.length+high.length]; + System.arraycopy(normal,0,ret,0,normal.length); + System.arraycopy(high,0,ret,normal.length,high.length); + return ret; } private List<String> getSupportedVideoSize(int cameraId) { StreamConfigurationMap map = mCharacteristics.get(cameraId).get( CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP); Size[] sizes = map.getOutputSizes(MediaRecorder.class); + boolean eisEnabled = getEISEnabled(); boolean isHeifEnabled = getSavePictureFormat() == HEIF_FORMAT; + VideoCapabilities heifCap = null; + if (isHeifEnabled) { + MediaCodecList list = new MediaCodecList(MediaCodecList.REGULAR_CODECS); + for (MediaCodecInfo info :list.getCodecInfos()) { + if (info.isEncoder() && info.getName().contains("heic")){ + heifCap = info.getCapabilitiesForType( + MediaFormat.MIMETYPE_IMAGE_ANDROID_HEIC).getVideoCapabilities(); + Log.d(TAG,"supported heif height range ="+heifCap.getSupportedHeights().toString() + + " width range ="+heifCap.getSupportedWidths().toString()); + } + } + } List<String> res = new ArrayList<>(); for (int i = 0; i < sizes.length; i++) { - if (isHeifEnabled && (Math.min(sizes[i].getWidth(),sizes[i].getHeight()) < 512)) { - continue; + if (isHeifEnabled && heifCap != null ){ + if (!heifCap.getSupportedWidths().contains(sizes[i].getWidth()) || + !heifCap.getSupportedHeights().contains(sizes[i].getHeight())){ + continue; + } + } + if (eisEnabled) { + // eis didn`t support less than 720P + if (Math.min(sizes[i].getWidth(),sizes[i].getHeight()) < 720 || + Math.max(sizes[i].getWidth(),sizes[i].getHeight()) < 1280) { + continue; + } } if (CameraSettings.VIDEO_QUALITY_TABLE.containsKey(sizes[i].toString())) { Integer profile = CameraSettings.VIDEO_QUALITY_TABLE.get(sizes[i].toString()); @@ -1956,6 +2028,7 @@ public class SettingsManager implements ListMenu.SettingsListener { } } } + return supported; } diff --git a/src/com/android/camera/imageprocessor/FrameProcessor.java b/src/com/android/camera/imageprocessor/FrameProcessor.java index 6397229f0..cd1a5f8a2 100755 --- a/src/com/android/camera/imageprocessor/FrameProcessor.java +++ b/src/com/android/camera/imageprocessor/FrameProcessor.java @@ -81,8 +81,6 @@ public class FrameProcessor { private ListeningTask mListeningTask; private RenderScript mRs; private Activity mActivity; - ScriptC_YuvToRgb mRsYuvToRGB; - ScriptC_rotator mRsRotator; private Size mSize; private Object mAllocationLock = new Object(); private boolean mIsAllocationEverUsed; @@ -108,8 +106,6 @@ public class FrameProcessor { mFinalFilters = new ArrayList<ImageFilter>(); mRs = RenderScript.create(mActivity); - mRsYuvToRGB = new ScriptC_YuvToRgb(mRs); - mRsRotator = new ScriptC_rotator(mRs); } private void init(Size previewDim) { @@ -158,11 +154,6 @@ public class FrameProcessor { Type.Builder nv21TypeBuilder = new Type.Builder(mRs, Element.U8(mRs)); nv21TypeBuilder.setX(width * height * 3 / 2); mProcessAllocation = Allocation.createTyped(mRs, nv21TypeBuilder.create(), Allocation.USAGE_SCRIPT); - mRsRotator.set_gIn(mInputAllocation); - mRsRotator.set_gOut(mProcessAllocation); - mRsRotator.set_width(width); - mRsRotator.set_height(height); - mRsRotator.set_pad(stridePad); int degree = 90; if(mModule.getMainCameraCharacteristics() != null) { degree = mModule.getMainCameraCharacteristics(). @@ -171,10 +162,6 @@ public class FrameProcessor { degree = Math.abs(degree - 90); } } - mRsRotator.set_degree(degree); - mRsYuvToRGB.set_gIn(mProcessAllocation); - mRsYuvToRGB.set_width(height); - mRsYuvToRGB.set_height(width); } public ArrayList<ImageFilter> getFrameFilters() { @@ -491,8 +478,6 @@ public class FrameProcessor { createAllocation(stride, height, stride - width); } mInputAllocation.copyFrom(yvuBytes); - mRsRotator.forEach_rotate90andMerge(mInputAllocation); - mRsYuvToRGB.forEach_nv21ToRgb(mOutputAllocation); mOutputAllocation.ioSend(); if (mVideoOutputAllocation != null) { mVideoOutputAllocation.copyFrom(mOutputAllocation); diff --git a/src/com/android/camera/ui/FlashToggleButton.java b/src/com/android/camera/ui/FlashToggleButton.java index fa766bfb8..abeedef21 100644..100755 --- a/src/com/android/camera/ui/FlashToggleButton.java +++ b/src/com/android/camera/ui/FlashToggleButton.java @@ -71,8 +71,21 @@ public class FlashToggleButton extends RotateImageView { String userSetting = mContext.getString( R.string.pref_camera_manual_exp_value_user_setting); String manualExposureMode = mSettingsManager.getValue(SettingsManager.KEY_MANUAL_EXPOSURE); + String scene = mSettingsManager.getValue(SettingsManager.KEY_SCENE_MODE); + boolean mfnrEnable = false; + String mfnrValue = mSettingsManager.getValue(SettingsManager.KEY_CAPTURE_MFNR_VALUE); + if (mfnrValue != null) { + mfnrEnable = mfnrValue.equals("1"); + } + boolean promode = false; + if (scene != null) { + int mode = Integer.parseInt(scene); + if (mode == SettingsManager.SCENE_MODE_PROMODE_INT) { + promode = true; + } + } if (mIndex == -1 || (redeye != null && redeye.equals("on")) || - manualExposureMode.equals(userSetting)) { + manualExposureMode.equals(userSetting) || promode || mfnrEnable) { setVisibility(GONE); return; } else { diff --git a/src/com/android/camera/ui/OneUICameraControls.java b/src/com/android/camera/ui/OneUICameraControls.java index 994c1089d..9ede5101a 100755 --- a/src/com/android/camera/ui/OneUICameraControls.java +++ b/src/com/android/camera/ui/OneUICameraControls.java @@ -593,6 +593,7 @@ public class OneUICameraControls extends RotatableLayout { mProModeCloseButton.setVisibility(INVISIBLE); return; } + setProModeParameters(); mProModeLayout.setVisibility(VISIBLE); mProModeCloseButton.setVisibility(VISIBLE); mProModeLayout.setY(mHeight - mBottom - mProModeLayout.getHeight()); diff --git a/version.mk b/version.mk index e64719dee..72d4ffb46 100755 --- a/version.mk +++ b/version.mk @@ -40,7 +40,7 @@ # base_version_build is 3 digits and auto-increment for fixing CR. base_version_major := 2 base_version_minor := 02 -base_version_build := 033 +base_version_build := 037 ##################################################### ##################################################### |