1b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* 2b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. 3b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * 4b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Use of this source code is governed by a BSD-style license 5b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * that can be found in the LICENSE file in the root of the source 6b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * tree. An additional intellectual property rights grant can be found 7b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * in the file PATENTS. All contributing project authors may 8b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * be found in the AUTHORS file in the root of the source tree. 9b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 10b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 11b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgpackage org.webrtc.vieautotest; 12b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 13b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgimport org.webrtc.vieautotest.R; 14b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 15b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgimport android.app.Activity; 16b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgimport android.os.Bundle; 17b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgimport android.util.Log; 18b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgimport android.widget.Button; 19b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgimport android.view.SurfaceView; 20b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgimport android.view.View; 21b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgimport android.view.SurfaceHolder; 22b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgimport android.widget.LinearLayout; 23b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgimport android.opengl.GLSurfaceView; 24b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgimport android.widget.Spinner; 25b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgimport android.widget.ArrayAdapter; 26b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgimport android.widget.AdapterView; 27b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 28b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgpublic class ViEAutotest extends Activity 29b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org implements 30b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org AdapterView.OnItemSelectedListener, 31b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org View.OnClickListener { 32b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 33b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org private Thread testThread; 34b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org private Spinner testSpinner; 35b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org private Spinner subtestSpinner; 36b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org private int testSelection; 37b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org private int subTestSelection; 38b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 39b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // View for remote video 40b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org private LinearLayout remoteSurface = null; 41b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org private GLSurfaceView glSurfaceView = null; 42b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org private SurfaceView surfaceView = null; 43b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 44b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org private LinearLayout localSurface = null; 45b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org private GLSurfaceView glLocalSurfaceView = null; 46b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org private SurfaceView localSurfaceView = null; 47b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 48b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org /** Called when the activity is first created. */ 49b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org @Override 50b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org public void onCreate(Bundle savedInstanceState) { 51b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 52b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org Log.d("*WEBRTC*", "onCreate called"); 53b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 54b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org super.onCreate(savedInstanceState); 55b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org setContentView(R.layout.main); 56b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 57b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // Set the Start button action 58b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org final Button buttonStart = (Button) findViewById(R.id.Button01); 59b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org buttonStart.setOnClickListener(this); 60b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 61b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // Set test spinner 62b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org testSpinner = (Spinner) findViewById(R.id.testSpinner); 63b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org ArrayAdapter<CharSequence> adapter = 64b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org ArrayAdapter.createFromResource(this, R.array.test_array, 65b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org android.R.layout.simple_spinner_item); 66b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 67b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org int resource = android.R.layout.simple_spinner_dropdown_item; 68b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org adapter.setDropDownViewResource(resource); 69b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org testSpinner.setAdapter(adapter); 70b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org testSpinner.setOnItemSelectedListener(this); 71b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 72b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // Set sub test spinner 73b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org subtestSpinner = (Spinner) findViewById(R.id.subtestSpinner); 74b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org ArrayAdapter<CharSequence> subtestAdapter = 75b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org ArrayAdapter.createFromResource(this, R.array.subtest_array, 76b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org android.R.layout.simple_spinner_item); 77b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 78b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org subtestAdapter.setDropDownViewResource(resource); 79b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org subtestSpinner.setAdapter(subtestAdapter); 80b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org subtestSpinner.setOnItemSelectedListener(this); 81b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 82b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org remoteSurface = (LinearLayout) findViewById(R.id.RemoteView); 83b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org surfaceView = new SurfaceView(this); 84b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org remoteSurface.addView(surfaceView); 85b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 86b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org localSurface = (LinearLayout) findViewById(R.id.LocalView); 87b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org localSurfaceView = new SurfaceView(this); 88b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org localSurfaceView.setZOrderMediaOverlay(true); 89b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org localSurface.addView(localSurfaceView); 90b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 91b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // Set members 92b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org testSelection = 0; 93b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org subTestSelection = 0; 94b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org } 95b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 96b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org public void onClick(View v) { 97b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org Log.d("*WEBRTC*", "Button clicked..."); 98b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org switch (v.getId()) { 99b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org case R.id.Button01: 100b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org new Thread(new Runnable() { 101b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org public void run() { 102b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org Log.d("*WEBRTC*", "Calling RunTest..."); 103b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org RunTest(testSelection, subTestSelection, 104b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org localSurfaceView, surfaceView); 105b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org Log.d("*WEBRTC*", "RunTest done"); 106b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org } 107b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org }).start(); 108b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org } 109b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org } 110b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 111b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org public void onItemSelected(AdapterView<?> parent, View v, 112b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org int position, long id) { 113b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 114b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org if (parent == (Spinner) findViewById(R.id.testSpinner)) { 115b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org testSelection = position; 116b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org } else { 117b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org subTestSelection = position; 118b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org } 119b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org } 120b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 121b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org public void onNothingSelected(AdapterView<?> parent) { 122b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org } 123b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 124b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org @Override 125b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org protected void onStart() { 126b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org super.onStart(); 127b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org } 128b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 129b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org @Override 130b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org protected void onResume() { 131b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org super.onResume(); 132b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org } 133b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 134b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org @Override 135b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org protected void onPause() { 136b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org super.onPause(); 137b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org } 138b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 139b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org @Override 140b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org protected void onStop() { 141b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org super.onStop(); 142b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org } 143b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 144b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org @Override 145b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org protected void onDestroy() { 146b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 147b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org super.onDestroy(); 148b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org } 149b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 150b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // C++ function performing the chosen test 151b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // private native int RunTest(int testSelection, int subtestSelection, 152b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // GLSurfaceView window1, GLSurfaceView window2); 153b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org private native int RunTest(int testSelection, int subtestSelection, 154b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org SurfaceView window1, SurfaceView window2); 155b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 156b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // this is used to load the 'ViEAutotestJNIAPI' library on application 157b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // startup. 158b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org static { 159b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org Log.d("*WEBRTC*", "Loading ViEAutotest..."); 160b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org System.loadLibrary("webrtc-video-autotest-jni"); 161b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org } 162b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 163