Merge "Improve the usability of CTS Verifier "Camera Formats"" into kitkat-cts-dev
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/camera/formats/CameraFormatsActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/camera/formats/CameraFormatsActivity.java
old mode 100644
new mode 100755
index d68d1da..3e52ed8
--- a/apps/CtsVerifier/src/com/android/cts/verifier/camera/formats/CameraFormatsActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/camera/formats/CameraFormatsActivity.java
@@ -34,13 +34,17 @@
import android.os.Handler;
import android.util.Log;
import android.util.SparseArray;
+import android.view.Menu;
+import android.view.MenuItem;
import android.view.View;
import android.view.Surface;
import android.view.TextureView;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
+import android.widget.Button;
import android.widget.ImageView;
import android.widget.Spinner;
+import android.widget.Toast;
import java.io.IOException;
import java.lang.InterruptedException;
@@ -100,11 +104,22 @@
private TreeSet<String> mTestedCombinations = new TreeSet<String>();
private TreeSet<String> mUntestedCombinations = new TreeSet<String>();
+ private int mAllCombinationsSize = 0;
+
+ // Menu to show the test progress
+ private static final int MENU_ID_PROGRESS = Menu.FIRST + 1;
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.cf_main);
+
+ mAllCombinationsSize = calcAllCombinationsSize();
+
+ // disable "Pass" button until all combinations are tested
+ setPassButtonEnabled(false);
+
setPassFailButtonClickListeners();
setInfoResources(R.string.camera_format, R.string.cf_info, -1);
@@ -161,6 +176,36 @@
}
@Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ menu.add(Menu.NONE, MENU_ID_PROGRESS, Menu.NONE, "Current Progress");
+ return super.onCreateOptionsMenu(menu);
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ boolean ret = true;
+ switch (item.getItemId()) {
+ case MENU_ID_PROGRESS:
+ showCombinationsDialog();
+ ret = true;
+ break;
+ default:
+ ret = super.onOptionsItemSelected(item);
+ break;
+ }
+ return ret;
+ }
+
+ private void showCombinationsDialog() {
+ AlertDialog.Builder builder =
+ new AlertDialog.Builder(CameraFormatsActivity.this);
+ builder.setMessage(getTestDetails())
+ .setTitle("Current Progress")
+ .setPositiveButton("OK", null);
+ builder.show();
+ }
+
+ @Override
public void onResume() {
super.onResume();
@@ -526,6 +571,12 @@
+ "\n";
mUntestedCombinations.remove(combination);
mTestedCombinations.add(combination);
+
+ displayToast(combination.replace("\n", ""));
+
+ if (mTestedCombinations.size() == mAllCombinationsSize) {
+ setPassButtonEnabled(true);
+ }
}
}
mProcessInProgress = false;
@@ -533,6 +584,34 @@
}
+ private void setPassButtonEnabled(boolean enabled) {
+ Button pass_button = (Button) findViewById(R.id.pass_button);
+ pass_button.setEnabled(enabled);
+ }
+
+ private int calcAllCombinationsSize() {
+ int allCombinationsSize = 0;
+ int numCameras = Camera.getNumberOfCameras();
+
+ for (int i = 0; i<numCameras; i++) {
+ // must release a Camera object before a new Camera object is created
+ shutdownCamera();
+
+ mCamera = Camera.open(i);
+ Camera.Parameters p = mCamera.getParameters();
+
+ allCombinationsSize +=
+ p.getSupportedPreviewSizes().size() * // resolutions
+ p.getSupportedPreviewFormats().size(); // formats
+ }
+
+ return allCombinationsSize;
+ }
+
+ private void displayToast(String combination) {
+ Toast.makeText(this, "\"" + combination + "\"\n" + " has been tested.", Toast.LENGTH_LONG).show();
+ }
+
public void onPreviewFrame(byte[] data, Camera camera) {
if (mProcessInProgress || mState != STATE_PREVIEW) return;