1c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi/* 2c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Copyright (C) 2013 The Android Open Source Project 3c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * 4c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Licensed under the Apache License, Version 2.0 (the "License"); 5c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * you may not use this file except in compliance with the License. 6c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * You may obtain a copy of the License at 7c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * 8c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * http://www.apache.org/licenses/LICENSE-2.0 9c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * 10c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Unless required by applicable law or agreed to in writing, software 11c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * distributed under the License is distributed on an "AS IS" BASIS, 12c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * See the License for the specific language governing permissions and 14c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * limitations under the License. 15c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi */ 16c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 17c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchipackage com.android.mediaframeworktest.functional.camera; 18c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 19c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchiimport android.hardware.Camera; 20c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchiimport android.hardware.Camera.PictureCallback; 21c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchiimport android.hardware.Camera.ShutterCallback; 22c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchiimport android.os.Environment; 23c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchiimport android.os.Handler; 24c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchiimport android.os.Looper; 25c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchiimport android.test.ActivityInstrumentationTestCase2; 26c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchiimport android.test.suitebuilder.annotation.LargeTest; 27c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchiimport android.util.FloatMath; 28c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchiimport android.util.Log; 29c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchiimport android.view.SurfaceHolder; 30c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 31c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchiimport java.util.concurrent.Semaphore; 32c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchiimport java.util.concurrent.TimeUnit; 33c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchiimport java.util.List; 34c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 35c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchiimport com.android.mediaframeworktest.MediaFrameworkTest; 36c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchiimport com.android.mediaframeworktest.CameraStressTestRunner; 37c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchiimport com.android.mediaframeworktest.CameraTestHelper; 38c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchiimport junit.framework.Assert; 39c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 40c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi/** 41c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Junit / Instrumentation test case for camera API pairwise testing 42c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Settings tested against: flash mode, exposure compensation, white balance, 43c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * scene mode, picture size, and geotagging 44c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * 45c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * adb shell am instrument 46c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * - e class com.android.mediaframeworktest.stress.CameraPairwiseTest 47c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * - w com.android.mediaframeworktest/.CameraStressTestRunner 48c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi */ 49c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchipublic class CameraPairwiseTest extends ActivityInstrumentationTestCase2<MediaFrameworkTest> { 50c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi private CameraTestHelper mCameraTestHelper; 51c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi private Handler mHandler; 52c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi private Thread mLooperThread; 53c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi private String TAG = "CameraPairwiseTest"; 54c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 55c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi private static final long WAIT_TIMEOUT = 10 * 1000; // 10 seconds 56c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 57c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi // coordinates of the Getty Museuem in Los Angeles 58c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi private static final double MOCK_LATITUDE = 34.076621; 59c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi private static final double MOCK_LONGITUDE = -118.473215; 60c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 61c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi // camera setting enums 62c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public enum Flash { ON, OFF, AUTO }; 63c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public enum Exposure { MIN, MAX, NONE }; 64c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public enum WhiteBalance { DAYLIGHT, FLUORESCENT, CLOUDY, INCANDESCENT, AUTO }; 65c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public enum SceneMode { SUNSET, ACTION, PARTY, NIGHT, AUTO }; 66c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public enum PictureSize { SMALL, MEDIUM, LARGE }; 67c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public enum Geotagging { ON, OFF }; 68c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 69c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public CameraPairwiseTest() { 70c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi super("com.android.mediaframeworktest", MediaFrameworkTest.class); 71c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 72c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 73c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi protected void setUp() throws Exception { 74c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi final Semaphore sem = new Semaphore(0); 75c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi mLooperThread = new Thread() { 76c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi @Override 77c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public void run() { 78c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi Log.v(TAG, "starting looper"); 79c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi Looper.prepare(); 80c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi mHandler = new Handler(); 81c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi sem.release(); 82c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi Looper.loop(); 83c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi Log.v(TAG, "quit looper"); 84c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 85c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi }; 86c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi mLooperThread.start(); 87c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi if (!sem.tryAcquire(WAIT_TIMEOUT, TimeUnit.MILLISECONDS)) { 88c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi fail("Failed to start the looper."); 89c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 90c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi getActivity(); 91c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi super.setUp(); 92c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 93c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi mCameraTestHelper = new CameraTestHelper(); 94c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 95c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 96c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi @Override 97c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi protected void tearDown() throws Exception { 98c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi if (mHandler != null) { 99c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi mHandler.getLooper().quit(); 100c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi mHandler = null; 101c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 102c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi if (mLooperThread != null) { 103c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi mLooperThread.join(WAIT_TIMEOUT); 104c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi if (mLooperThread.isAlive()) { 105c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi fail("Failed to stop the looper."); 106c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 107c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi mLooperThread = null; 108c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 109c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi super.tearDown(); 110c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 111c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 112c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi private void runOnLooper(final Runnable command) throws InterruptedException { 113c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi final Semaphore sem = new Semaphore(0); 114c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi mHandler.post(new Runnable() { 115c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi @Override 116c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public void run() { 117c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi try { 118c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi command.run(); 119c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } finally { 120c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi sem.release(); 121c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 122c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 123c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi }); 124c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi if (!sem.tryAcquire(WAIT_TIMEOUT, TimeUnit.MILLISECONDS)) { 125c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi fail("Failed to run the command on the looper."); 126c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 127c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 128c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 129c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi /** 130c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Flash: Auto / Exposure: None / WB: Daylight 131c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Scene: Sunset / Pic: Medium / Geo: off 132c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi */ 133c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi @LargeTest 134c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public void testCameraPairwiseScenario01() throws Exception { 135c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi genericPairwiseTestCase(Flash.AUTO, Exposure.NONE, WhiteBalance.DAYLIGHT, SceneMode.SUNSET, 136c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi PictureSize.MEDIUM, Geotagging.OFF); 137c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 138c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 139c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi /** 140c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Flash: On / Exposure: Min / WB: Fluorescent 141c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Scene: Auto / Pic: Large / Geo: on 142c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi */ 143c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi @LargeTest 144c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public void testCameraPairwiseScenario02() throws Exception { 145c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi genericPairwiseTestCase(Flash.ON, Exposure.MIN, WhiteBalance.FLUORESCENT, SceneMode.AUTO, 146c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi PictureSize.LARGE, Geotagging.ON); 147c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 148c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 149c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi /** 150c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Flash: Off / Exposure: Max / WB: Auto 151c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Scene: Night / Pic: Small / Geo: on 152c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi */ 153c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi @LargeTest 154c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public void testCameraPairwiseScenario03() throws Exception { 155c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi genericPairwiseTestCase(Flash.OFF, Exposure.MAX, WhiteBalance.AUTO, SceneMode.NIGHT, 156c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi PictureSize.SMALL, Geotagging.ON); 157c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 158c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 159c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi /** 160c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Flash: Off / Exposure: Max / WB: Cloudy 161c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Scene: Auto / Pic: Med / Geo: off 162c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi */ 163c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi @LargeTest 164c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public void testCameraPairwiseScenario04() throws Exception { 165c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi genericPairwiseTestCase(Flash.OFF, Exposure.MAX, WhiteBalance.CLOUDY, SceneMode.AUTO, 166c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi PictureSize.MEDIUM, Geotagging.OFF); 167c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 168c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 169c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi /** 170c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Flash: Auto / Exposure: Max / WB: Incandescent 171c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Scene: Auto / Pic: Large / Geo: off 172c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi */ 173c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi @LargeTest 174c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public void testCameraPairwiseScenario05() throws Exception { 175c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi genericPairwiseTestCase(Flash.AUTO, Exposure.MAX, WhiteBalance.INCANDESCENT, 176c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi SceneMode.AUTO, PictureSize.LARGE, Geotagging.OFF); 177c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 178c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 179c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi /** 180c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Flash: On / Exposure: None / WB: Cloudy 181c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Scene: Auto / Pic: Small / Geo: on 182c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi */ 183c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi @LargeTest 184c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public void testCameraPairwiseScenario06() throws Exception { 185c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi genericPairwiseTestCase(Flash.ON, Exposure.NONE, WhiteBalance.CLOUDY, SceneMode.AUTO, 186c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi PictureSize.SMALL, Geotagging.ON); 187c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 188c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 189c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi /** 190c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Flash: Auto / Exposure: Min / WB: Auto 191c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Scene: Action / Pic: Small / Geo: on 192c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi */ 193c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi @LargeTest 194c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public void testCameraPairwiseScenario07() throws Exception { 195c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi genericPairwiseTestCase(Flash.AUTO, Exposure.MIN, WhiteBalance.AUTO, SceneMode.ACTION, 196c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi PictureSize.SMALL, Geotagging.ON); 197c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 198c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 199c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi /** 200c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Flash: On / Exposure: Min / WB: Auto 201c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Scene: Action / Pic: Medium / Geo: off 202c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi */ 203c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi @LargeTest 204c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public void testCameraPairwiseScenario08() throws Exception { 205c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi genericPairwiseTestCase(Flash.ON, Exposure.MIN, WhiteBalance.AUTO, SceneMode.ACTION, 206c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi PictureSize.MEDIUM, Geotagging.OFF); 207c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 208c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 209c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi /** 210c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Flash: Off / Exposure: Min / WB: Auto 211c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Scene: Night / Pic: Large / Geo: off 212c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi */ 213c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi @LargeTest 214c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public void testCameraPairwiseScenario09() throws Exception { 215c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi genericPairwiseTestCase(Flash.OFF, Exposure.MIN, WhiteBalance.AUTO, SceneMode.NIGHT, 216c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi PictureSize.LARGE, Geotagging.OFF); 217c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 218c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 219c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi /** 220c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Flash: Off / Exposure: Min / WB: Daylight 221c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Scene: Sunset / Pic: Small / Geo: off 222c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi */ 223c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi @LargeTest 224c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public void testCameraPairwiseScenario10() throws Exception { 225c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi genericPairwiseTestCase(Flash.OFF, Exposure.MIN, WhiteBalance.DAYLIGHT, SceneMode.SUNSET, 226c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi PictureSize.SMALL, Geotagging.OFF); 227c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 228c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 229c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi /** 230c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Flash: On / Exposure: Max / WB: Daylight 231c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Scene: Sunset / Pic: Large / Geo: on 232c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi */ 233c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi @LargeTest 234c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public void testCameraPairwiseScenario11() throws Exception { 235c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi genericPairwiseTestCase(Flash.ON, Exposure.MAX, WhiteBalance.DAYLIGHT, SceneMode.SUNSET, 236c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi PictureSize.LARGE, Geotagging.ON); 237c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 238c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 239c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi /** 240c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Flash: Auto / Exposure: Min / WB: Cloudy 241c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Scene: Auto / Pic: Large / Geo: off 242c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi */ 243c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi @LargeTest 244c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public void testCameraPairwiseScenario12() throws Exception { 245c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi genericPairwiseTestCase(Flash.AUTO, Exposure.MIN, WhiteBalance.CLOUDY, SceneMode.AUTO, 246c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi PictureSize.LARGE, Geotagging.OFF); 247c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 248c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 249c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi /** 250c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Flash: Off / Exposure: None / WB: Auto 251c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Scene: Party / Pic: Medium / Geo: on 252c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi */ 253c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi @LargeTest 254c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public void testCameraPairwiseScenario13() throws Exception { 255c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi genericPairwiseTestCase(Flash.OFF, Exposure.NONE, WhiteBalance.AUTO, SceneMode.PARTY, 256c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi PictureSize.MEDIUM, Geotagging.ON); 257c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 258c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 259c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi /** 260c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Flash: Auto / Exposure: None / WB: Auto 261c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Scene: Night / Pic: Small / Geo: off 262c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi */ 263c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi @LargeTest 264c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public void testCameraPairwiseScenario14() throws Exception { 265c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi genericPairwiseTestCase(Flash.AUTO, Exposure.NONE, WhiteBalance.AUTO, SceneMode.NIGHT, 266c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi PictureSize.SMALL, Geotagging.OFF); 267c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 268c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 269c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi /** 270c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Flash: On / Exposure: None / WB: Incandescent 271c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Scene: Auto / Pic: Medium / Geo: on 272c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi */ 273c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi @LargeTest 274c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public void testCameraPairwiseScenario15() throws Exception { 275c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi genericPairwiseTestCase(Flash.ON, Exposure.NONE, WhiteBalance.INCANDESCENT, SceneMode.AUTO, 276c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi PictureSize.MEDIUM, Geotagging.ON); 277c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 278c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 279c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi /** 280c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Flash: Auto / Exposure: Min / WB: Auto 281c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Scene: Party / Pic: Small / Geo: off 282c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi */ 283c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi @LargeTest 284c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public void testCameraPairwiseScenario16() throws Exception { 285c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi genericPairwiseTestCase(Flash.AUTO, Exposure.MIN, WhiteBalance.AUTO, SceneMode.PARTY, 286c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi PictureSize.SMALL, Geotagging.OFF); 287c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 288c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 289c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi /** 290c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Flash: Off / Exposure: Min / WB: Incandescent 291c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Scene: Auto / Pic: Small / Geo: off 292c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi */ 293c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi @LargeTest 294c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public void testCameraPairwiseScenario17() throws Exception { 295c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi genericPairwiseTestCase(Flash.OFF, Exposure.MIN, WhiteBalance.INCANDESCENT, SceneMode.AUTO, 296c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi PictureSize.SMALL, Geotagging.OFF); 297c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 298c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 299c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi /** 300c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Flash: On / Exposure: None / WB: Auto 301c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Scene: Party / Pic: Large / Geo: off 302c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi */ 303c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi @LargeTest 304c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public void testCameraPairwiseScenario18() throws Exception { 305c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi genericPairwiseTestCase(Flash.ON, Exposure.NONE, WhiteBalance.AUTO, SceneMode.PARTY, 306c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi PictureSize.LARGE, Geotagging.OFF); 307c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 308c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 309c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi /** 310c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Flash Off / Exposure: None / WB: Auto 311c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Scene: Action / Pic: Large / Geo: off 312c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi */ 313c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi @LargeTest 314c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public void testCameraPairwiseScenario19() throws Exception { 315c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi genericPairwiseTestCase(Flash.OFF, Exposure.NONE, WhiteBalance.AUTO, SceneMode.ACTION, 316c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi PictureSize.LARGE, Geotagging.OFF); 317c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 318c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 319c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi /** 320c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Flash: Off / Exposure: Max / WB: Fluorescent 321c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Scene: Auto / Pic: Medium / Geo: Off 322c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi */ 323c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi @LargeTest 324c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public void testCameraPairwiseScenario20() throws Exception { 325c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi genericPairwiseTestCase(Flash.OFF, Exposure.MAX, WhiteBalance.FLUORESCENT, SceneMode.AUTO, 326c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi PictureSize.MEDIUM, Geotagging.OFF); 327c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 328c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 329c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi /** 330c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Flash: Off / Exposure: Min / WB: Auto 331c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Scene: Auto / Pic: Medium / Geo: off 332c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi */ 333c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public void testCameraPairwiseScenario21() throws Exception { 334c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi genericPairwiseTestCase(Flash.OFF, Exposure.MIN, WhiteBalance.AUTO, SceneMode.AUTO, 335c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi PictureSize.MEDIUM, Geotagging.OFF); 336c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 337c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 338c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi /** 339c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Flash: On / Exposure: Max / WB: Auto 340c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Scene: Action / Pic: Small / Geo: off 341c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi */ 342c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public void testCameraPairwiseScenario22() throws Exception { 343c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi genericPairwiseTestCase(Flash.ON, Exposure.MAX, WhiteBalance.AUTO, SceneMode.ACTION, 344c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi PictureSize.SMALL, Geotagging.OFF); 345c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 346c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 347c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi /** 348c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Flash: On / Exposure: Max / WB: Auto 349c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Scene: Night / Pic: Medium / Geo: on 350c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi */ 351c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public void testCameraPairwiseScenario23() throws Exception { 352c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi genericPairwiseTestCase(Flash.ON, Exposure.MAX, WhiteBalance.AUTO, SceneMode.NIGHT, 353c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi PictureSize.MEDIUM, Geotagging.ON); 354c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 355c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 356c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi /** 357c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Flash: Auto / Exposure: None / WB: Fluorescent 358c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Scene: Auto / Pic: Small / Geo: on 359c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi */ 360c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public void testCameraPairwiseScenario24() throws Exception { 361c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi genericPairwiseTestCase(Flash.AUTO, Exposure.NONE, WhiteBalance.FLUORESCENT, 362c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi SceneMode.AUTO, PictureSize.SMALL, Geotagging.ON); 363c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 364c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 365c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi /** 366c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Flash: Auto / Exposure: Max / WB: Daylight 367c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Scene: Auto / Pic: Medium / Geo: off 368c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi */ 369c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public void testCameraPairwiseScenario25() throws Exception { 370c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi genericPairwiseTestCase(Flash.AUTO, Exposure.MAX, WhiteBalance.DAYLIGHT, SceneMode.AUTO, 371c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi PictureSize.MEDIUM, Geotagging.OFF); 372c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 373c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 374c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi /** 375c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Flash: Auto / Exposure: Max / WB: Auto 376c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Scene: Party / Pic: Medium / Geo: on 377c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi */ 378c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public void testCameraPairwiseScenario26() throws Exception { 379c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi genericPairwiseTestCase(Flash.AUTO, Exposure.MAX, WhiteBalance.AUTO, SceneMode.PARTY, 380c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi PictureSize.MEDIUM, Geotagging.ON); 381c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 382c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 383c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi /** 384c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi * Generic pairwise test method 385c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi */ 386c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi private void genericPairwiseTestCase(Flash flash, Exposure exposure, WhiteBalance whitebalance, 387c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi SceneMode scenemode, PictureSize picturesize, Geotagging geotagging) throws Exception { 388c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi try { 389c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi SurfaceHolder surfaceHolder = MediaFrameworkTest.mSurfaceView.getHolder(); 390c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi Camera.Parameters params = mCameraTestHelper.getCameraParameters(); 391c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 392c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi runOnLooper(new Runnable() { 393c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi @Override 394c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi public void run() { 395c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi mCameraTestHelper.setupCameraTest(); 396c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 397c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi }); 398c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 399c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi // Configure flash setting 400c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi switch (flash) { 401c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi case ON: 402c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi params.setFlashMode(Camera.Parameters.FLASH_MODE_ON); 403c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi break; 404c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi case OFF: 405c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF); 406c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi break; 407c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi case AUTO: 408c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi params.setFlashMode(Camera.Parameters.FLASH_MODE_AUTO); 409c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi break; 410c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 411c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 412c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi // Configure exposure setting 413c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi switch (exposure) { 414c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi case MIN: 415c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi params.setExposureCompensation(params.getMinExposureCompensation()); 416c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi break; 417c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi case MAX: 418c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi params.setExposureCompensation(params.getMaxExposureCompensation()); 419c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi break; 420c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi case NONE: 421c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi params.setExposureCompensation(0); 422c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi break; 423c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 424c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 425c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi // Configure white balance setting 426c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi switch (whitebalance) { 427c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi case DAYLIGHT: 428c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi params.setWhiteBalance(Camera.Parameters.WHITE_BALANCE_DAYLIGHT); 429c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi break; 430c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi case FLUORESCENT: 431c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi params.setWhiteBalance(Camera.Parameters.WHITE_BALANCE_FLUORESCENT); 432c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi break; 433c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi case INCANDESCENT: 434c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi params.setWhiteBalance(Camera.Parameters.WHITE_BALANCE_INCANDESCENT); 435c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi break; 436c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi case CLOUDY: 437c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi params.setWhiteBalance(Camera.Parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT); 438c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi break; 439c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi case AUTO: 440c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi params.setWhiteBalance(Camera.Parameters.WHITE_BALANCE_AUTO); 441c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi break; 442c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 443c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 444c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi // Configure scene mode setting 445c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi switch (scenemode) { 446c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi case SUNSET: 447c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi params.setSceneMode(Camera.Parameters.SCENE_MODE_SUNSET); 448c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi break; 449c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi case ACTION: 450c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi params.setSceneMode(Camera.Parameters.SCENE_MODE_ACTION); 451c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi break; 452c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi case PARTY: 453c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi params.setSceneMode(Camera.Parameters.SCENE_MODE_PARTY); 454c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi break; 455c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi case NIGHT: 456c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi params.setSceneMode(Camera.Parameters.SCENE_MODE_NIGHT); 457c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi break; 458c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi case AUTO: 459c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi params.setSceneMode(Camera.Parameters.SCENE_MODE_AUTO); 460c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi break; 461c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 462c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 463c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi // Configure picture size setting 464c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi List<Camera.Size> supportedPictureSizes = params.getSupportedPictureSizes(); 465c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi int mid = (int) Math.floor(supportedPictureSizes.size() / 2); 466c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi int low = supportedPictureSizes.size() - 1; 467c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi switch (picturesize) { 468c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi case SMALL: 469c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi params.setPictureSize(supportedPictureSizes.get(low).width, 470c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi supportedPictureSizes.get(low).height); 471c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi break; 472c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi case MEDIUM: 473c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi params.setPictureSize(supportedPictureSizes.get(mid).width, 474c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi supportedPictureSizes.get(mid).height); 475c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi break; 476c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi case LARGE: 477c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi params.setPictureSize(supportedPictureSizes.get(0).width, 478c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi supportedPictureSizes.get(mid).height); 479c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi break; 480c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 481c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 482c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi // Configure geotagging setting 483c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi switch (geotagging) { 484c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi case ON: 485c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi params.setGpsLatitude(MOCK_LATITUDE); 486c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi params.setGpsLongitude(MOCK_LONGITUDE); 487c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi break; 488c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi case OFF: 489c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi break; 490c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 491c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi 492c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi mCameraTestHelper.setParameters(params); 493c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi mCameraTestHelper.startCameraPreview(surfaceHolder); 494c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi mCameraTestHelper.capturePhoto(); 495c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi mCameraTestHelper.cleanupTestImages(); 496c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } catch (Exception e) { 497c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi Log.e(TAG, e.toString()); 498c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi fail("Test case failed"); 499c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 500c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi } 501c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi} 502