IPControlsJB.java revision 31f4588d26e258c61543e90e796c4c9a8c2a1482
1/* 2 * Copyright (C) 2013 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package com.android.rs.imagejb; 18 19import android.app.Activity; 20import android.os.Bundle; 21import android.os.Handler; 22import android.os.Message; 23import android.graphics.Canvas; 24import android.view.SurfaceView; 25import android.widget.AdapterView; 26import android.widget.ArrayAdapter; 27import android.widget.ImageView; 28import android.widget.SeekBar; 29import android.widget.Spinner; 30import android.widget.ToggleButton; 31import android.widget.TextView; 32import android.widget.CompoundButton; 33import android.widget.ListView; 34import android.view.View; 35import java.util.ArrayList; 36import java.util.ListIterator; 37import android.util.Log; 38import android.content.Intent; 39 40import android.os.Environment; 41import java.io.BufferedWriter; 42import java.io.File; 43import java.io.FileWriter; 44import java.io.IOException; 45 46public class IPControlsJB extends Activity { 47 private final String TAG = "Img"; 48 public final String RESULT_FILE = "image_processing_result.csv"; 49 50 private ToggleButton mIOButton; 51 private Spinner mResSpinner; 52 private ListView mTestListView; 53 54 private ArrayAdapter<String> mTestListAdapter; 55 private ArrayList<String> mTestList = new ArrayList<String>(); 56 57 private boolean mToggleIO = true; 58 private boolean mToggleDVFS = true; 59 private boolean mToggleLong = false; 60 private boolean mTogglePause = false; 61 62 63 public enum Resolutions { 64 RES_4K(3840, 2160, "4k (3840x2160)"), 65 RES_1080P(1920, 1080, "1080p (1920x1080)"), 66 RES_720P(1280, 720, "720p (1280x720)"), 67 RES_WVGA(800, 480, "WVGA (800x480)"); 68 69 private final String name; 70 public final int width; 71 public final int height; 72 73 private Resolutions(int w, int h, String s) { 74 width = w; 75 height = h; 76 name = s; 77 } 78 79 // return quoted string as displayed test name 80 public String toString() { 81 return name; 82 } 83 } 84 private Resolutions mRes; 85 86 87 private AdapterView.OnItemSelectedListener mResSpinnerListener = 88 new AdapterView.OnItemSelectedListener() { 89 public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { 90 mRes = Resolutions.values()[pos]; 91 } 92 93 public void onNothingSelected(AdapterView parent) { 94 } 95 }; 96 97 void init() { 98 mIOButton = (ToggleButton) findViewById(R.id.io_control); 99 100 mResSpinner = (Spinner) findViewById(R.id.image_size); 101 mResSpinner.setOnItemSelectedListener(mResSpinnerListener); 102 mResSpinner.setAdapter(new ArrayAdapter<Resolutions>( 103 this, R.layout.spinner_layout, Resolutions.values())); 104 105 for (int i=0; i < IPTestListJB.TestName.values().length; i++) { 106 mTestList.add(IPTestListJB.TestName.values()[i].toString()); 107 } 108 109 mTestListView = (ListView) findViewById(R.id.test_list); 110 mTestListAdapter = new ArrayAdapter(this, 111 android.R.layout.simple_list_item_activated_1, 112 mTestList); 113 114 mTestListView.setAdapter(mTestListAdapter); 115 mTestListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 116 mTestListAdapter.notifyDataSetChanged(); 117 118 ToggleButton toggle; 119 toggle = (ToggleButton) findViewById(R.id.io_control); 120 toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 121 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 122 mToggleIO = isChecked; 123 } 124 }); 125 toggle.setChecked(mToggleIO); 126 127 toggle = (ToggleButton) findViewById(R.id.length_control); 128 toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 129 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 130 mToggleLong = isChecked; 131 } 132 }); 133 toggle.setChecked(mToggleLong); 134 135 toggle = (ToggleButton) findViewById(R.id.background_work); 136 toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 137 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 138 mToggleDVFS = isChecked; 139 } 140 }); 141 toggle.setChecked(mToggleDVFS); 142 143 toggle = (ToggleButton) findViewById(R.id.pause); 144 toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 145 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 146 mTogglePause = isChecked; 147 } 148 }); 149 toggle.setChecked(mTogglePause); 150 151 152 } 153 154 @Override 155 protected void onCreate(Bundle savedInstanceState) { 156 super.onCreate(savedInstanceState); 157 setContentView(R.layout.controls); 158 init(); 159 } 160 161 @Override 162 protected void onPause() { 163 super.onPause(); 164 165 //cleanup(); 166 } 167 168 169 @Override 170 protected void onResume() { 171 super.onResume(); 172 173 // init(); 174 } 175 176 private void checkGroup(int group) { 177 IPTestListJB.TestName t[] = IPTestListJB.TestName.values(); 178 for (int i=0; i < t.length; i++) { 179 mTestListView.setItemChecked(i, group == t[i].group); 180 } 181 } 182 183 public void btnRun(View v) { 184 IPTestListJB.TestName t[] = IPTestListJB.TestName.values(); 185 186 int count = 0; 187 for (int i = 0; i < t.length; i++) { 188 if (mTestListView.isItemChecked(i)) { 189 count++; 190 } 191 } 192 if (count == 0) { 193 return; 194 } 195 196 int testList[] = new int[count]; 197 count = 0; 198 for (int i = 0; i < t.length; i++) { 199 if (mTestListView.isItemChecked(i)) { 200 testList[count++] = i; 201 } 202 } 203 204 Intent intent = new Intent(this, ImageProcessingActivityJB.class); 205 intent.putExtra("tests", testList); 206 intent.putExtra("enable io", mToggleIO); 207 intent.putExtra("enable dvfs", mToggleDVFS); 208 intent.putExtra("enable long", mToggleLong); 209 intent.putExtra("enable pause", mTogglePause); 210 intent.putExtra("resolution X", mRes.width); 211 intent.putExtra("resolution Y", mRes.height); 212 startActivityForResult(intent, 0); 213 } 214 215 protected void onActivityResult(int requestCode, int resultCode, Intent data) { 216 if (requestCode == 0) { 217 if (resultCode == RESULT_OK) { 218 float r[] = data.getFloatArrayExtra("results"); 219 int id[] = data.getIntArrayExtra("tests"); 220 221 for (int ct=0; ct < id.length; ct++) { 222 IPTestListJB.TestName t = IPTestListJB.TestName.values()[id[ct]]; 223 224 String s = IPTestListJB.TestName.values()[id[ct]].toString(); 225 s += " " + r[ct] + "ms"; 226 mTestList.set(id[ct], s); 227 mTestListAdapter.notifyDataSetChanged(); 228 } 229 230 android.util.Log.v("rs", "result " + r); 231 } 232 } 233 } 234 235 public void btnSelAll(View v) { 236 IPTestListJB.TestName t[] = IPTestListJB.TestName.values(); 237 for (int i=0; i < t.length; i++) { 238 mTestListView.setItemChecked(i, true); 239 } 240 } 241 242 public void btnSelNone(View v) { 243 checkGroup(-1); 244 } 245 246 public void btnSelHp(View v) { 247 checkGroup(0); 248 } 249 250 public void btnSelLp(View v) { 251 checkGroup(1); 252 } 253 254 public void btnSelIntrinsic(View v) { 255 checkGroup(2); 256 } 257 258 259 260} 261