aboutsummaryrefslogtreecommitdiff
path: root/apps/TestingCamera
diff options
context:
space:
mode:
authorAlex Ray <aray@google.com>2012-10-22 23:30:22 -0700
committerAlex Ray <aray@google.com>2012-11-02 12:46:55 -0700
commit410aac04ee752c7f3506afb64b4a1e8ab9785cef (patch)
tree9d5c4dce01ab815bc3bd0c5d4f52b7eff67cce89 /apps/TestingCamera
parent8bf3e54287366cf790c25577568334b92f67d178 (diff)
downloadpdk-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.xml14
-rw-r--r--apps/TestingCamera/res/values/strings.xml1
-rw-r--r--apps/TestingCamera/src/com/android/testingcamera/TestingCamera.java48
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());