diff options
author | Alex Ray <aray@google.com> | 2012-10-22 23:30:22 -0700 |
---|---|---|
committer | Alex Ray <aray@google.com> | 2012-11-02 12:46:55 -0700 |
commit | 410aac04ee752c7f3506afb64b4a1e8ab9785cef (patch) | |
tree | 9d5c4dce01ab815bc3bd0c5d4f52b7eff67cce89 /apps/TestingCamera | |
parent | 8bf3e54287366cf790c25577568334b92f67d178 (diff) | |
download | pdk-410aac04ee752c7f3506afb64b4a1e8ab9785cef.tar.gz |
TestingCamera: Add Video Frame Rate Selection
Add selectable frame rates for video recording. Chosen based on the
list of preview frame rates available.
Change-Id: I11e93061f214646ae44a5e4f649b86405caefd06
Diffstat (limited to 'apps/TestingCamera')
-rw-r--r-- | apps/TestingCamera/res/layout/main.xml | 14 | ||||
-rw-r--r-- | apps/TestingCamera/res/values/strings.xml | 1 | ||||
-rw-r--r-- | apps/TestingCamera/src/com/android/testingcamera/TestingCamera.java | 48 |
3 files changed, 63 insertions, 0 deletions
diff --git a/apps/TestingCamera/res/layout/main.xml b/apps/TestingCamera/res/layout/main.xml index a83c5db..42dce9b 100644 --- a/apps/TestingCamera/res/layout/main.xml +++ b/apps/TestingCamera/res/layout/main.xml @@ -239,6 +239,20 @@ android:layout_height="wrap_content" android:layout_weight="1" /> + <TextView + android:id="@+id/video_frame_rate_label" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="@string/video_frame_rate_prompt" + android:textAppearance="?android:attr/textAppearanceSmall" /> + + <Spinner + android:id="@+id/video_frame_rate_spinner" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" /> + <ToggleButton android:id="@+id/start_record" android:layout_width="fill_parent" diff --git a/apps/TestingCamera/res/values/strings.xml b/apps/TestingCamera/res/values/strings.xml index e86b350..41f107f 100644 --- a/apps/TestingCamera/res/values/strings.xml +++ b/apps/TestingCamera/res/values/strings.xml @@ -30,6 +30,7 @@ <string name="record_off_label">Recording off</string> <string name="camcorder_profile_prompt">Camcorder profile</string> <string name="video_record_size_prompt">Video Record size</string> + <string name="video_frame_rate_prompt">Video Frame Rate</string> <string name="horiz_rule_color">#777777</string> <string name="show_info">Info</string> <string name="info_ok_button_label">OK</string> diff --git a/apps/TestingCamera/src/com/android/testingcamera/TestingCamera.java b/apps/TestingCamera/src/com/android/testingcamera/TestingCamera.java index dc58384..1ca0e87 100644 --- a/apps/TestingCamera/src/com/android/testingcamera/TestingCamera.java +++ b/apps/TestingCamera/src/com/android/testingcamera/TestingCamera.java @@ -78,6 +78,7 @@ public class TestingCamera extends Activity implements SurfaceHolder.Callback { private Button mTakePictureButton; private Spinner mCamcorderProfileSpinner; private Spinner mVideoRecordSizeSpinner; + private Spinner mVideoFrameRateSpinner; private ToggleButton mRecordToggle; private TextView mLogView; @@ -100,6 +101,8 @@ public class TestingCamera extends Activity implements SurfaceHolder.Callback { private int mCamcorderProfile = 0; private List<Camera.Size> mVideoRecordSizes; private int mVideoRecordSize = 0; + private List<Integer> mVideoFrameRates; + private int mVideoFrameRate = 0; private MediaRecorder mRecorder; private File mRecordingFile; @@ -165,6 +168,9 @@ public class TestingCamera extends Activity implements SurfaceHolder.Callback { mVideoRecordSizeSpinner = (Spinner) findViewById(R.id.video_record_size_spinner); mVideoRecordSizeSpinner.setOnItemSelectedListener(mVideoRecordSizeListener); + mVideoFrameRateSpinner = (Spinner) findViewById(R.id.video_frame_rate_spinner); + mVideoFrameRateSpinner.setOnItemSelectedListener(mVideoFrameRateListener); + mRecordToggle = (ToggleButton) findViewById(R.id.start_record); mRecordToggle.setOnClickListener(mRecordToggleListener); mPreviewOnlyControls.add(mRecordToggle); @@ -464,6 +470,21 @@ public class TestingCamera extends Activity implements SurfaceHolder.Callback { } }; + private AdapterView.OnItemSelectedListener mVideoFrameRateListener = + new AdapterView.OnItemSelectedListener() { + public void onItemSelected(AdapterView<?> parent, + View view, int pos, long id) { + if (pos == mVideoFrameRate) return; + + log("Setting video frame rate to " + ((TextView)view).getText()); + mVideoFrameRate = pos; + } + + public void onNothingSelected(AdapterView<?> parent) { + + } + }; + private View.OnClickListener mRecordToggleListener = new View.OnClickListener() { public void onClick(View v) { @@ -539,6 +560,7 @@ public class TestingCamera extends Activity implements SurfaceHolder.Callback { updateSnapshotSizes(mParams); updateCamcorderProfile(mCameraId); updateVideoRecordSize(mCameraId); + updateVideoFrameRate(mCameraId); // Update parameters based on above updates mCamera.setParameters(mParams); @@ -729,6 +751,29 @@ public class TestingCamera extends Activity implements SurfaceHolder.Callback { log("Setting video record profile to " + nameArray[mVideoRecordSize]); } + private void updateVideoFrameRate(int cameraId) { + // Use preview framerates as video framerates + List<Integer> frameRates = mParams.getSupportedPreviewFrameRates(); + + List<String> frameRateStrings = new ArrayList<String>(); + mVideoFrameRates = new ArrayList<Integer>(); + + frameRateStrings.add("Default"); + mVideoFrameRates.add(0); + + for (Integer frameRate : frameRates) { + frameRateStrings.add(frameRate.toString()); + mVideoFrameRates.add(frameRate); + } + String[] nameArray = (String[])frameRateStrings.toArray(new String[0]); + mVideoFrameRateSpinner.setAdapter( + new ArrayAdapter<String>( + this, R.layout.spinner_item, nameArray)); + + mVideoFrameRate = 0; + log("Setting frame rate to " + nameArray[mVideoFrameRate]); + } + void resizePreview(int width, int height) { if (mPreviewHolder != null) { int viewHeight = mPreviewView.getHeight(); @@ -827,6 +872,9 @@ public class TestingCamera extends Activity implements SurfaceHolder.Callback { if (videoRecordSize.width > 0 && videoRecordSize.height > 0) { mRecorder.setVideoSize(videoRecordSize.width, videoRecordSize.height); } + if (mVideoFrameRates.get(mVideoFrameRate) > 0) { + mRecorder.setVideoFrameRate(mVideoFrameRates.get(mVideoFrameRate)); + } File outputFile = getOutputMediaFile(MEDIA_TYPE_VIDEO); log("File name:" + outputFile.toString()); mRecorder.setOutputFile(outputFile.toString()); |