diff options
author | Alex Ray <aray@google.com> | 2013-11-25 12:56:01 -0800 |
---|---|---|
committer | Alex Ray <aray@google.com> | 2013-11-25 13:59:26 -0800 |
commit | 7608c20fef0bbbdcfdb0cc491d38e92435688bed (patch) | |
tree | 19eb4d5132f586458844cd533e97a21ed3003b3c /apps/TestingCamera | |
parent | 186ba3ae105b2b9439c512df252a44179666f650 (diff) | |
download | pdk-7608c20fef0bbbdcfdb0cc491d38e92435688bed.tar.gz |
TestingCamera: Add zoom control
Change-Id: I1849902d5a33e9cfd91e575fede2858aa3d28cb1
Diffstat (limited to 'apps/TestingCamera')
-rw-r--r-- | apps/TestingCamera/res/layout/main.xml | 16 | ||||
-rw-r--r-- | apps/TestingCamera/res/values/strings.xml | 1 | ||||
-rw-r--r-- | apps/TestingCamera/src/com/android/testingcamera/TestingCamera.java | 34 |
3 files changed, 51 insertions, 0 deletions
diff --git a/apps/TestingCamera/res/layout/main.xml b/apps/TestingCamera/res/layout/main.xml index 8853902..cf9843f 100644 --- a/apps/TestingCamera/res/layout/main.xml +++ b/apps/TestingCamera/res/layout/main.xml @@ -221,6 +221,22 @@ android:textOff="@string/exposure_lock_off_label" android:textOn="@string/exposure_lock_on_label" /> + <TextView + android:id="@+id/zoom_label" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="@string/zoom_label" + android:textAppearance="?android:attr/textAppearanceSmall" /> + + <SeekBar + android:id="@+id/zoom_seekbar" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:progress="0" + style="?android:attr/progressBarStyleHorizontal" /> + <View android:id="@+id/horizontal_rule_3" android:layout_width="fill_parent" diff --git a/apps/TestingCamera/res/values/strings.xml b/apps/TestingCamera/res/values/strings.xml index af5ad7f..be5b79c 100644 --- a/apps/TestingCamera/res/values/strings.xml +++ b/apps/TestingCamera/res/values/strings.xml @@ -56,4 +56,5 @@ <string name="keep_open_prompt">Keep open on exit</string> <string name="record_handoff_prompt">No camera recording handoff</string> <string name="color_effect_prompt">Color Effect</string> + <string name="zoom_label">Zoom</string> </resources> diff --git a/apps/TestingCamera/src/com/android/testingcamera/TestingCamera.java b/apps/TestingCamera/src/com/android/testingcamera/TestingCamera.java index ef43010..09a522c 100644 --- a/apps/TestingCamera/src/com/android/testingcamera/TestingCamera.java +++ b/apps/TestingCamera/src/com/android/testingcamera/TestingCamera.java @@ -43,6 +43,7 @@ import android.widget.Button; import android.widget.CheckBox; import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; +import android.widget.SeekBar; import android.widget.Spinner; import android.widget.TextView; import android.widget.ToggleButton; @@ -106,6 +107,7 @@ public class TestingCamera extends Activity private ToggleButton mCallbackToggle; private TextView mColorEffectSpinnerLabel; private Spinner mColorEffectSpinner; + private SeekBar mZoomSeekBar; private TextView mLogView; @@ -138,6 +140,7 @@ public class TestingCamera extends Activity private int mVideoFrameRate = 0; private List<String> mColorEffects; private int mColorEffect = 0; + private int mZoom = 0; private MediaRecorder mRecorder; private File mRecordingFile; @@ -226,6 +229,9 @@ public class TestingCamera extends Activity mExposureLockToggle.setOnClickListener(mExposureLockToggleListener); mOpenOnlyControls.add(mExposureLockToggle); + mZoomSeekBar = (SeekBar) findViewById(R.id.zoom_seekbar); + mZoomSeekBar.setOnSeekBarChangeListener(mZoomSeekBarListener); + mSnapshotSizeSpinner = (Spinner) findViewById(R.id.snapshot_size_spinner); mSnapshotSizeSpinner.setOnItemSelectedListener(mSnapshotSizeListener); mOpenOnlyControls.add(mSnapshotSizeSpinner); @@ -901,6 +907,16 @@ public class TestingCamera extends Activity mExposureLockToggle.setEnabled(false); } + if (mParams.isZoomSupported()) { + int maxZoom = mParams.getMaxZoom(); + mZoomSeekBar.setMax(maxZoom); + log("Zoom is supported, set max to " + maxZoom); + mZoomSeekBar.setEnabled(true); + } else { + log("Zoom is not supported"); + mZoomSeekBar.setEnabled(false); + } + // Update parameters based on above updates mCamera.setParameters(mParams); @@ -987,6 +1003,24 @@ public class TestingCamera extends Activity } }; + private final SeekBar.OnSeekBarChangeListener mZoomSeekBarListener = + new SeekBar.OnSeekBarChangeListener() { + @Override + public void onProgressChanged(SeekBar seekBar, int progress, + boolean fromUser) { + mZoom = progress; + mParams.setZoom(mZoom); + mCamera.setParameters(mParams); + } + @Override + public void onStartTrackingTouch(SeekBar seekBar) { } + @Override + public void onStopTrackingTouch(SeekBar seekBar) { + log("Zoom set to " + mZoom + " / " + mParams.getMaxZoom() + " (" + + ((float)(mParams.getZoomRatios().get(mZoom))/100) + "x)"); + } + }; + private void updatePreviewSizes(Camera.Parameters params) { mPreviewSizes = params.getSupportedPreviewSizes(); |