11ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling/* 21ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * Copyright (C) 2010 The Android Open Source Project 31ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * 41ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * Licensed under the Apache License, Version 2.0 (the "License"); 51ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * you may not use this file except in compliance with the License. 61ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * You may obtain a copy of the License at 71ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * 81ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * http://www.apache.org/licenses/LICENSE-2.0 91ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * 101ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * Unless required by applicable law or agreed to in writing, software 111ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * distributed under the License is distributed on an "AS IS" BASIS, 121ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * See the License for the specific language governing permissions and 141ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * limitations under the License. 151ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling */ 161ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 173189c037886fda47be73da9885e6760df50efd71Jason Noguchipackage com.android.camera.stress; 181ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 191ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberlingimport com.android.camera.CameraActivity; 203189c037886fda47be73da9885e6760df50efd71Jason Noguchiimport com.android.camera.stress.TestUtil; 211ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 221ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberlingimport android.app.Activity; 231ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberlingimport android.app.Instrumentation; 241ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberlingimport android.content.Intent; 251ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberlingimport android.provider.MediaStore; 261ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberlingimport android.test.ActivityInstrumentationTestCase2; 271ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberlingimport android.test.suitebuilder.annotation.LargeTest; 281ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberlingimport android.view.KeyEvent; 291ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 303189c037886fda47be73da9885e6760df50efd71Jason Noguchiimport com.android.camera.stress.CameraStressTestRunner; 311ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 321ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling/** 331ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * Junit / Instrumentation test case for camera test 341ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * 351ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * Running the test suite: 361ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * 371ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * adb shell am instrument \ 381ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * -e class com.android.camera.stress.VideoCapture \ 391ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * -w com.google.android.camera.tests/android.test.InstrumentationTestRunner 401ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling * 411ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling */ 421ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 431ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberlingpublic class VideoCapture extends ActivityInstrumentationTestCase2 <CameraActivity> { 441ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling private static final long WAIT_FOR_PREVIEW = 1500; //1.5 seconds 451ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling private static final long WAIT_FOR_SWITCH_CAMERA = 3000; //2 seconds 461ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 471ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling // Private intent extras which control the camera facing. 481ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling private final static String EXTRAS_CAMERA_FACING = 491ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling "android.intent.extras.CAMERA_FACING"; 501ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 511ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling private TestUtil testUtil = new TestUtil(); 521ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 531ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling public VideoCapture() { 541ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling super(CameraActivity.class); 551ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling } 561ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 571ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling @Override 581ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling protected void setUp() throws Exception { 591ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling testUtil.prepareOutputFile(); 601ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling super.setUp(); 611ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling } 621ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 631ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling @Override 641ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling protected void tearDown() throws Exception { 651ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling testUtil.closeOutputFile(); 661ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling super.tearDown(); 671ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling } 681ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 691ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling public void captureVideos(String reportTag, Instrumentation inst) throws Exception{ 701ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling boolean memoryResult = false; 711ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling int total_num_of_videos = CameraStressTestRunner.mVideoIterations; 721ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling int video_duration = CameraStressTestRunner.mVideoDuration; 731ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling testUtil.writeReportHeader(reportTag, total_num_of_videos); 741ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 751ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling for (int i = 0; i < total_num_of_videos; i++) { 761ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling Thread.sleep(WAIT_FOR_PREVIEW); 771ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling // record a video 781ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling inst.sendCharacterSync(KeyEvent.KEYCODE_CAMERA); 791ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling Thread.sleep(video_duration); 801ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling inst.sendCharacterSync(KeyEvent.KEYCODE_CAMERA); 811ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling testUtil.writeResult(i); 821ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling } 831ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling } 841ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 851ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling public void testBackVideoCapture() throws Exception { 861ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling Instrumentation inst = getInstrumentation(); 871ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling Intent intent = new Intent(MediaStore.INTENT_ACTION_VIDEO_CAMERA); 881ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 891ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling intent.setClass(getInstrumentation().getTargetContext(), CameraActivity.class); 901ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 911ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling intent.putExtra(EXTRAS_CAMERA_FACING, 921ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling android.hardware.Camera.CameraInfo.CAMERA_FACING_BACK); 931ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling Activity act = inst.startActivitySync(intent); 941ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling Thread.sleep(WAIT_FOR_SWITCH_CAMERA); 951ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling captureVideos("Back Camera Video Capture\n", inst); 961ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling act.finish(); 971ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling } 981ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 991ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling public void testFrontVideoCapture() throws Exception { 1001ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling Instrumentation inst = getInstrumentation(); 1011ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling Intent intent = new Intent(MediaStore.INTENT_ACTION_VIDEO_CAMERA); 1021ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling 1031ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling intent.setClass(getInstrumentation().getTargetContext(), CameraActivity.class); 1041ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 1051ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling intent.putExtra(EXTRAS_CAMERA_FACING, 1061ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling android.hardware.Camera.CameraInfo.CAMERA_FACING_FRONT); 1071ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling Activity act = inst.startActivitySync(intent); 1081ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling Thread.sleep(WAIT_FOR_SWITCH_CAMERA); 1091ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling captureVideos("Front Camera Video Capture\n", inst); 1101ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling act.finish(); 1111ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling } 1121ac5817f362f6f8262bf00191e1e419996475380Sascha Haeberling} 113