149cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau/* 249cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau * Copyright (C) 2009 The Android Open Source Project 349cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau * 449cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau * Licensed under the Apache License, Version 2.0 (the "License"); 549cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau * you may not use this file except in compliance with the License. 649cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau * You may obtain a copy of the License at 749cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau * 849cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau * http://www.apache.org/licenses/LICENSE-2.0 949cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau * 1049cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau * Unless required by applicable law or agreed to in writing, software 1149cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau * distributed under the License is distributed on an "AS IS" BASIS, 1249cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1349cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau * See the License for the specific language governing permissions and 1449cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau * limitations under the License. 1549cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau */ 1649cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau 1749cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Laupackage com.android.camera.power; 1849cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau 1949cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lauimport com.android.camera.Camera; 20559f5cf9f42c4983eaef9e6e55ff3ba7c406426aWu-cheng Liimport com.android.camera.VideoCamera; 2149cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau 2249cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lauimport android.app.Instrumentation; 2349cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lauimport android.test.ActivityInstrumentationTestCase2; 2449cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lauimport android.test.suitebuilder.annotation.LargeTest; 2549cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lauimport android.util.Log; 2649cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lauimport android.view.KeyEvent; 2749cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lauimport android.content.Intent; 2849cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau/** 2949cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau * Junit / Instrumentation test case for camera power measurement 3049cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau * 3149cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau * Running the test suite: 3249cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau * 3349cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau * adb shell am instrument \ 3449cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau * -e com.android.camera.power.ImageAndVideoCapture \ 35e480f77352d670b2892a9b7b7cd503838b71ca9fRomain Guy * -w com.android.camera.tests/android.test.InstrumentationTestRunner 3649cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau * 3749cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau */ 3849cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau 3949cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Laupublic class ImageAndVideoCapture extends ActivityInstrumentationTestCase2 <Camera> { 4049cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau private String TAG = "ImageAndVideoCapture"; 4149cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau private static final int TOTAL_NUMBER_OF_IMAGECAPTURE = 5; 4249cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau private static final int TOTAL_NUMBER_OF_VIDEOCAPTURE = 5; 4349cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau private static final long WAIT_FOR_IMAGE_CAPTURE_TO_BE_TAKEN = 1500; //1.5 sedconds 4449cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau private static final long WAIT_FOR_VIDEO_CAPTURE_TO_BE_TAKEN = 10000; //10 seconds 4549cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau private static final long WAIT_FOR_PREVIEW = 1500; //1.5 seconds 4649cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau private static final long WAIT_FOR_STABLE_STATE = 2000; //2 seconds 4749cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau 4849cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau public ImageAndVideoCapture() { 49559f5cf9f42c4983eaef9e6e55ff3ba7c406426aWu-cheng Li super(Camera.class); 5049cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau } 5149cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau 5249cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau @Override 5349cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau protected void setUp() throws Exception { 5449cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau getActivity(); 5549cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau super.setUp(); 5649cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau } 5749cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau 5849cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau @Override 5949cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau protected void tearDown() throws Exception { 6049cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau super.tearDown(); 6149cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau } 6249cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau 6349cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau @LargeTest 64a1f18aec8f7a9a7cf5823d807c7eac6b6186c28bYu Shan Emily Lau public void testLaunchCamera() { 6549cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau // This test case capture the baseline for the image preview. 6649cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau try { 6749cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau Thread.sleep(WAIT_FOR_STABLE_STATE); 6849cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau } catch (Exception e) { 692ff6c061fe55ad46b192961f27379853c20362bcWu-cheng Li Log.v(TAG, "Got exception", e); 7049cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau assertTrue("testImageCaptureDoNothing", false); 7149cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau } 7249cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau } 7349cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau 7449cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau @LargeTest 75a1f18aec8f7a9a7cf5823d807c7eac6b6186c28bYu Shan Emily Lau public void testCapture5Image() { 7649cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau // This test case will use the default camera setting 7749cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau Instrumentation inst = getInstrumentation(); 7849cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau try { 7949cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau for (int i = 0; i < TOTAL_NUMBER_OF_IMAGECAPTURE; i++) { 8049cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau Thread.sleep(WAIT_FOR_IMAGE_CAPTURE_TO_BE_TAKEN); 8149cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau inst.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_UP); 8249cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau inst.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_CENTER); 8349cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau Thread.sleep(WAIT_FOR_IMAGE_CAPTURE_TO_BE_TAKEN); 8449cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau } 8549cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau Thread.sleep(WAIT_FOR_STABLE_STATE); 8649cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau } catch (Exception e) { 872ff6c061fe55ad46b192961f27379853c20362bcWu-cheng Li Log.v(TAG, "Got exception", e); 8849cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau assertTrue("testImageCapture", false); 8949cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau } 9049cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau } 9149cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau 9249cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau @LargeTest 93a1f18aec8f7a9a7cf5823d807c7eac6b6186c28bYu Shan Emily Lau public void testCapture5Videos() { 9449cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau // This test case will use the default camera setting 9549cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau Instrumentation inst = getInstrumentation(); 9649cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau try { 9749cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau // Switch to the video mode 9849cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau Intent intent = new Intent(); 99559f5cf9f42c4983eaef9e6e55ff3ba7c406426aWu-cheng Li intent.setClass(getInstrumentation().getTargetContext(), 100559f5cf9f42c4983eaef9e6e55ff3ba7c406426aWu-cheng Li VideoCamera.class); 10149cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau getActivity().startActivity(intent); 10249cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau for (int i = 0; i < TOTAL_NUMBER_OF_VIDEOCAPTURE; i++) { 10349cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau Thread.sleep(WAIT_FOR_PREVIEW); 10449cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau // record a video 10549cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau inst.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_CENTER); 10649cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau Thread.sleep(WAIT_FOR_VIDEO_CAPTURE_TO_BE_TAKEN); 10749cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau inst.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_CENTER); 10849cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau Thread.sleep(WAIT_FOR_PREVIEW); 10949cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau } 11049cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau Thread.sleep(WAIT_FOR_STABLE_STATE); 11149cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau } catch (Exception e) { 1122ff6c061fe55ad46b192961f27379853c20362bcWu-cheng Li Log.v(TAG, "Got exception", e); 11349cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau assertTrue("testVideoCapture", false); 11449cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau } 11549cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau } 11649cf4edd6178c36a0d86a5bbed950004bfbd12a1Yu Shan Emily Lau} 117