summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/VideoUI.java
diff options
context:
space:
mode:
authorJay Wang <jaywang@codeaurora.org>2015-05-05 10:37:52 -0700
committerByunghun Jeon <bjeon@codeaurora.org>2015-09-16 17:15:18 -0700
commit59b05fd1d75943f037aec41def16cdceb6443ecf (patch)
treebdc41665161e398f9992e7baff76243e1c1f3f9e /src/com/android/camera/VideoUI.java
parent465c11e451e18b7f3e8109fdbbc56b866f7f8a56 (diff)
downloadandroid_packages_apps_Snap-59b05fd1d75943f037aec41def16cdceb6443ecf.tar.gz
android_packages_apps_Snap-59b05fd1d75943f037aec41def16cdceb6443ecf.tar.bz2
android_packages_apps_Snap-59b05fd1d75943f037aec41def16cdceb6443ecf.zip
SnapdragonCamera: Use floating components during video record.
During recording, there are only 2 widgets on UI. Directly attaching them to window manager and making main UI layer fully transparent can reduce power consumption. Change-Id: I8c4f4768ab91d50fc72080f0f6d7316ee2e60ef4
Diffstat (limited to 'src/com/android/camera/VideoUI.java')
-rw-r--r--src/com/android/camera/VideoUI.java81
1 files changed, 78 insertions, 3 deletions
diff --git a/src/com/android/camera/VideoUI.java b/src/com/android/camera/VideoUI.java
index bac1e3c11..fcd07449a 100644
--- a/src/com/android/camera/VideoUI.java
+++ b/src/com/android/camera/VideoUI.java
@@ -20,6 +20,7 @@ import java.util.List;
import org.codeaurora.snapcam.R;
+import android.content.Context;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.Color;
@@ -27,6 +28,7 @@ import android.graphics.Point;
import android.graphics.drawable.ColorDrawable;
import android.hardware.Camera.Parameters;
import android.util.Log;
+import android.util.TypedValue;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
@@ -35,6 +37,7 @@ import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLayoutChangeListener;
import android.view.ViewGroup;
+import android.view.WindowManager;
import android.widget.FrameLayout;
import android.widget.FrameLayout.LayoutParams;
import android.widget.ImageView;
@@ -101,6 +104,11 @@ public class VideoUI implements PieRenderer.PieListener,
private RotateLayout mSubMenuLayout;
private LinearLayout mPreviewMenuLayout;
+ private ShutterButton mFloatingShutter;
+ private RotateLayout mFloatingRecordingTimeRect;
+ private View mFloatingTimeLapse;
+ private boolean mPartialUiRecording;
+
private View mPreviewCover;
private SurfaceView mSurfaceView = null;
private int mMaxPreviewWidth = 0;
@@ -885,6 +893,28 @@ public class VideoUI implements PieRenderer.PieListener,
if (recording) {
mShutterButton.setImageResource(R.drawable.shutter_button_video_stop);
hideSwitcher();
+
+ if(mPartialUiRecording) {
+ mActivity.hideAboveFilmStripControlLayout();
+ mCameraControls.setVisibility(View.INVISIBLE);
+ mRenderOverlay.setVisibility(View.INVISIBLE);
+ mFloatingTimeLapse.setVisibility(mIsTimeLapse ? View.VISIBLE : View.GONE);
+
+ ((ViewGroup)mRootView).requestTransparentRegion((View) mSurfaceView.getParent());
+
+ int leftOffset = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 50, mActivity.getResources().getDisplayMetrics());
+ CameraUtil.addView(mActivity, mRecordingTimeRect, leftOffset, 0,
+ Gravity.TOP | Gravity.LEFT,
+ WindowManager.LayoutParams.WRAP_CONTENT,
+ WindowManager.LayoutParams.WRAP_CONTENT);
+
+ mShutterButton.setVisibility(View.GONE);
+
+ int shutterBottomOffset = (int)mActivity.getResources().getDimension(R.dimen.shutter_offset);
+ CameraUtil.addView(mActivity, mFloatingShutter, 0, shutterBottomOffset, Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL,
+ mShutterButton.getMeasuredWidth(), mShutterButton.getMeasuredHeight());
+ }
+
mRecordingTimeView.setText("");
mRecordingTimeView.setVisibility(View.VISIBLE);
mPauseButton.setVisibility(View.VISIBLE);
@@ -893,8 +923,20 @@ public class VideoUI implements PieRenderer.PieListener,
if (!mController.isVideoCaptureIntent()) {
showSwitcher();
}
- mRecordingTimeView.setVisibility(View.GONE);
- mPauseButton.setVisibility(View.GONE);
+
+ if(mPartialUiRecording) {
+ mShutterButton.setVisibility(View.VISIBLE);
+ WindowManager wm = (WindowManager) mActivity.getSystemService(Context.WINDOW_SERVICE);
+ wm.removeView(mRecordingTimeRect);
+ wm.removeView(mFloatingShutter);
+
+ mActivity.showAboveFilmStripControlLayout();
+ mCameraControls.setVisibility(View.VISIBLE);
+ mRenderOverlay.setVisibility(View.VISIBLE);
+ } else {
+ mRecordingTimeView.setVisibility(View.GONE);
+ mPauseButton.setVisibility(View.GONE);
+ }
}
}
@@ -979,7 +1021,10 @@ public class VideoUI implements PieRenderer.PieListener,
}
public void clickShutter() {
- mShutterButton.performClick();
+ if(mRecordingStarted && mPartialUiRecording)
+ mFloatingShutter.performClick();
+ else
+ mShutterButton.performClick();
}
public void pressShutter(boolean pressed) {
@@ -1132,4 +1177,34 @@ public class VideoUI implements PieRenderer.PieListener,
public void adjustOrientation() {
setOrientation(mOrientation, false);
}
+
+ public void setPartialUiRecording(boolean enable) {
+ mPartialUiRecording = enable;
+
+ if(mPartialUiRecording) {
+ if(mFloatingShutter == null) {
+ mFloatingShutter = (ShutterButton)View.inflate(mActivity, R.layout.floating_shutter_icon, null);
+ mFloatingShutter.setOnShutterButtonListener(mController);
+ }
+
+ if(mFloatingRecordingTimeRect == null) {
+ mFloatingRecordingTimeRect = new RotateLayout(mActivity, null);
+ mFloatingRecordingTimeRect.addView(View.inflate(mActivity, R.layout.floating_recording_time, null));
+ mFloatingTimeLapse = mFloatingRecordingTimeRect.findViewById(R.id.time_lapse_label);
+ }
+
+ mRootView.findViewById(R.id.recording_time_rect).setVisibility(View.GONE);
+ mRecordingTimeRect = mFloatingRecordingTimeRect;
+
+ mRecordingTimeView = (TextView) mRecordingTimeRect.findViewById(R.id.recording_time);
+ mPauseButton = (PauseButton) mRecordingTimeRect.findViewById(R.id.video_pause);
+ mPauseButton.setOnPauseButtonListener(this);
+ } else {
+ mRecordingTimeRect = (RotateLayout) mRootView.findViewById(R.id.recording_time_rect);
+ mRecordingTimeRect.setVisibility(View.VISIBLE);
+
+ mRecordingTimeView = (TextView) mRootView.findViewById(R.id.recording_time);
+ initializePauseButton();
+ }
+ }
}