am 761306fa: Remove CameraUtil.launchGallery, ensure SecureCamera uses Gallery up icon

* commit '761306fadfa94b538f43e8cf3463bf6d22814947':
  Remove CameraUtil.launchGallery, ensure SecureCamera uses Gallery up icon
diff --git a/res/values-az-rAZ/strings.xml b/res/values-az-rAZ/strings.xml
deleted file mode 100644
index c47c0cf..0000000
--- a/res/values-az-rAZ/strings.xml
+++ /dev/null
@@ -1,276 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2007 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_name" msgid="8338864393568040722">"Kamera"</string>
-    <string name="details_ms" msgid="4368407634456462224">"%1$02d:%2$02d"</string>
-    <string name="details_hms" msgid="681695897098326459">"%1$d:%2$02d:%3$02d"</string>
-    <string name="set_image" msgid="3011821258780340803">"Şəkli bu kimi istifadə edin:"</string>
-    <string name="delete" msgid="7258764001896874869">"Sil"</string>
-  <plurals name="delete_selection">
-    <item quantity="one" msgid="2984228592820245170">"Seçilmiş element silinsin?"</item>
-    <item quantity="other" msgid="882035505847338991">"Seçilmiş elementlər silinsin?"</item>
-  </plurals>
-    <string name="share" msgid="319799706929863109">"Paylaşın"</string>
-    <string name="share_panorama" msgid="7488525470543070168">"Panoramanı paylaş"</string>
-    <string name="share_as_photo" msgid="8960831195285082544">"Foto kimi paylaşın"</string>
-    <string name="deleted" msgid="1144434522200481802">"Silindi"</string>
-    <string name="undo" msgid="7561810819827468379">"Geri al"</string>
-    <string name="details" msgid="3581943734736871564">"Detallar"</string>
-    <string name="close" msgid="7196876073399885123">"Bağla"</string>
-  <plurals name="number_of_items_selected">
-    <item quantity="zero" msgid="629802015400399691">"%1$d seçilib"</item>
-    <item quantity="one" msgid="4283105620980058761">"%1$d seçilib"</item>
-    <item quantity="other" msgid="6433812272993337098">"%1$d seçilib"</item>
-  </plurals>
-  <plurals name="number_of_albums_selected">
-    <item quantity="zero" msgid="7322496523426352621">"%1$d seçilib"</item>
-    <item quantity="one" msgid="3571296348626418242">"%1$d seçilib"</item>
-    <item quantity="other" msgid="3103452138866993468">"%1$d seçilib"</item>
-  </plurals>
-  <plurals name="number_of_groups_selected">
-    <item quantity="zero" msgid="3312206920893882756">"%1$d seçilib"</item>
-    <item quantity="one" msgid="7749557015923438739">"%1$d seçilib"</item>
-    <item quantity="other" msgid="3562299676983425193">"%1$d seçilib"</item>
-  </plurals>
-    <string name="show_on_map" msgid="1986264085815015696">"Xəritədə göstərin"</string>
-    <string name="rotate_left" msgid="6719855780237705569">"Sola fırlat"</string>
-    <string name="rotate_right" msgid="8558343437940821771">"Sağa fırlat"</string>
-    <string name="edit" msgid="8457904262004517151">"Redaktə edin"</string>
-    <string name="crop_action" msgid="3281088975169422593">"Kəs"</string>
-    <string name="trim_action" msgid="1912063594235898890">"Nizamlama"</string>
-    <string name="set_as" msgid="7362777416265059096">"Belə et"</string>
-    <string name="video_err" msgid="6747342411484597130">"Video oxumur"</string>
-    <string name="crop_saved" msgid="6708204358512805637">"Kəsilmiş şəkil <xliff:g id="FOLDER_NAME">%s</xliff:g> qovluğunda yadda saxlanıldı."</string>
-    <string name="title" msgid="1465174588508188840">"Başlıq"</string>
-    <string name="description" msgid="7012551348834166615">"Təsvir"</string>
-    <string name="time" msgid="53680310933472250">"Vaxt"</string>
-    <string name="location" msgid="7836832588874777265">"Məkan"</string>
-    <string name="path" msgid="7641372546343443225">"Cığır"</string>
-    <string name="width" msgid="4689895076320623907">"Enlili"</string>
-    <string name="height" msgid="3982701549798669179">"Hündürlük"</string>
-    <string name="orientation" msgid="6270421867039429826">"Oriyentasiya"</string>
-    <string name="duration" msgid="1998783741258561149">"Müddət"</string>
-    <string name="mimetype" msgid="2655949175201126964">"MİM növü"</string>
-    <string name="file_size" msgid="624610858632029292">"Fayl ölçüsü"</string>
-    <string name="maker" msgid="6997781789783937494">"Yaradıcı"</string>
-    <string name="model" msgid="1812030182695078529">"Model"</string>
-    <string name="flash" msgid="8875025367055499744">"Flash"</string>
-    <string name="aperture" msgid="4049918471495099840">"Dəlik"</string>
-    <string name="focal_length" msgid="7208863566011453148">"Fokal Uzunluq"</string>
-    <string name="white_balance" msgid="2638519262687012770">"Ağlıq balansı"</string>
-    <string name="exposure_time" msgid="6992897250021008387">"Ekspozisiya vaxtı"</string>
-    <string name="iso" msgid="4909058434077568534">"ISO"</string>
-    <string name="unit_mm" msgid="1893537204908056363">"mm"</string>
-    <string name="manual" msgid="7862595820452711108">"Dərslik"</string>
-    <string name="auto" msgid="6792260257128968793">"Avto"</string>
-    <string name="flash_on" msgid="4053187950402210000">"İşartı oldu"</string>
-    <string name="flash_off" msgid="7313393221333362406">"İşartı yoxdur"</string>
-    <string name="unknown" msgid="2211992216750845926">"Naməlum"</string>
-    <string name="try_to_set_local_album_available_offline" msgid="1084363257705484486">"Bu element yerli və oflayn istifadə edilə biləcək şəkildə saxlanılır."</string>
-    <string name="please_wait" msgid="99283054995831377">"Lütfən, gözləyin"</string>
-    <string name="rendering_photo_sphere" msgid="6767345449862157889">"Photo Sphere təqdim edilir"</string>
-    <string name="camera_error_title" msgid="434116066686973315">"Kamera xətası"</string>
-    <string name="cannot_connect_camera" msgid="3323690925318631453">"Kamera qoşula bilmir."</string>
-    <string name="camera_disabled" msgid="4927328535752421596">"Təhlükəsizlik siyasətinə görə kamera deaktiv edilib."</string>
-    <string name="wait" msgid="2081747495953883435">"Lütfən, gözləyin..."</string>
-    <string name="no_storage" product="default" msgid="5694411578108472132">"Kamera istifadə etməzdən əvvəl SD kartı daxil edin."</string>
-    <string name="preparing_sd" product="default" msgid="5062635071578247325">"SD kart hazırlanır ..."</string>
-    <string name="access_sd_fail" product="default" msgid="7705342436207795167">"SD karta giriş mümkün olmadı."</string>
-    <string name="time_lapse_title" msgid="264021984782348139">"Vaxt aralığı qeyd olunur"</string>
-    <string name="pref_camera_id_title" msgid="8027686978170301915">"Kamera seçin"</string>
-    <string name="pref_camera_id_entry_back" msgid="8034690205259224353">"Geri"</string>
-    <string name="pref_camera_id_entry_front" msgid="2982741805298041753">"Ön"</string>
-    <string name="pref_camera_recordlocation_title" msgid="9032205520216091730">"Saxlama yeri"</string>
-    <string name="pref_camera_location_label" msgid="725236612912086608">"YER"</string>
-    <string name="pref_camera_timer_title" msgid="6917581164323911874">"Geri sayma taymeri"</string>
-  <plurals name="pref_camera_timer_entry">
-    <item quantity="one" msgid="8868342573738742056">"1 saniyə"</item>
-    <item quantity="other" msgid="3053084895126759755">"%d saniyə"</item>
-  </plurals>
-    <!-- no translation found for pref_camera_timer_sound_default (6748128807889344413) -->
-    <skip />
-    <string name="pref_camera_timer_sound_title" msgid="8640712080164781141">"Geri sayma zamanı siqnal"</string>
-    <string name="setting_off" msgid="3321226648786639381">"Deaktiv"</string>
-    <string name="setting_on" msgid="6658320155242340595">"Aktiv"</string>
-    <string name="pref_video_quality_title" msgid="133986891365610568">"Video keyfiyyəti"</string>
-    <string name="pref_video_quality_entry_high" msgid="2738623967850850381">"Yüksək"</string>
-    <string name="pref_video_quality_entry_low" msgid="5153461037045200762">"Aşağı"</string>
-    <string name="pref_video_time_lapse_frame_interval_title" msgid="5673396270006768004">"Vaxt aralığı"</string>
-    <string name="pref_camera_settings_category" msgid="4286755118301278593">"Kamera parametrləri"</string>
-    <string name="pref_camcorder_settings_category" msgid="4617708050480193189">"Videokamera ayarları"</string>
-    <string name="pref_camera_picturesize_title" msgid="7285867796470070880">"Şəklin ölçüsü"</string>
-    <string name="pref_camera_picturesize_entry_13mp" msgid="3084140665950405601">"13N piksel"</string>
-    <string name="pref_camera_picturesize_entry_8mp" msgid="6497793506352769366">"8M piksel"</string>
-    <string name="pref_camera_picturesize_entry_5mp" msgid="8813718385379530965">"5M Piksel"</string>
-    <string name="pref_camera_picturesize_entry_4mp" msgid="8546276478576735924">"4M piksel"</string>
-    <string name="pref_camera_picturesize_entry_3mp" msgid="6233692859150247237">"3M piksel"</string>
-    <string name="pref_camera_picturesize_entry_2mp" msgid="542341433431186453">"2M piksel"</string>
-    <string name="pref_camera_picturesize_entry_2mp_wide" msgid="607495602129189476">"2M piksel (16:9)"</string>
-    <string name="pref_camera_picturesize_entry_1_3mp" msgid="2279105572299544416">"1.3M piksel"</string>
-    <string name="pref_camera_picturesize_entry_1mp" msgid="4015199907773658431">"1M piksel"</string>
-    <string name="pref_camera_picturesize_entry_vga" msgid="5417241189390562935">"VGA"</string>
-    <string name="pref_camera_picturesize_entry_qvga" msgid="5211497128670067462">"QVGA"</string>
-    <string name="pref_camera_focusmode_title" msgid="4675290599521989576">"Fokus rejimi"</string>
-    <string name="pref_camera_focusmode_entry_auto" msgid="2359207328353055475">"Avto"</string>
-    <string name="pref_camera_focusmode_entry_infinity" msgid="2864044462778663709">"Sonsuzluq"</string>
-    <string name="pref_camera_focusmode_entry_macro" msgid="3737080531231192249">"Makro"</string>
-    <string name="pref_camera_focusmode_label_auto" msgid="3156723882642048128">"AVTO"</string>
-    <string name="pref_camera_focusmode_label_infinity" msgid="7911889349060603983">"Sonsuzluq"</string>
-    <string name="pref_camera_focusmode_label_macro" msgid="4573817863140007172">"MAKRO"</string>
-    <string name="pref_camera_flashmode_title" msgid="4037454739283955642">"Fləş rejimi"</string>
-    <string name="pref_camera_flashmode_label" msgid="6684291276546279860">"İŞARTI REJİMİ"</string>
-    <string name="pref_camera_flashmode_entry_auto" msgid="415227229724303061">"Avto"</string>
-    <string name="pref_camera_flashmode_entry_on" msgid="88773476344754314">"Aktiv"</string>
-    <string name="pref_camera_flashmode_entry_off" msgid="8251029141614172527">"Deaktiv"</string>
-    <string name="pref_camera_flashmode_label_auto" msgid="3099050003430647170">"AVTOİŞARTI"</string>
-    <string name="pref_camera_flashmode_label_on" msgid="2719503527558187559">"İŞARTI AKTİV"</string>
-    <string name="pref_camera_flashmode_label_off" msgid="1018914822085714107">"İşıq qapalıdır"</string>
-    <string name="pref_camera_whitebalance_title" msgid="3555176845614423913">"Ağlıq balansı"</string>
-    <string name="pref_camera_whitebalance_label" msgid="4253164949812366852">"AĞ BALANS"</string>
-    <string name="pref_camera_whitebalance_entry_auto" msgid="8495359619521890418">"Avto"</string>
-    <string name="pref_camera_whitebalance_entry_incandescent" msgid="374516940783347212">"Közərmə lampası"</string>
-    <string name="pref_camera_whitebalance_entry_daylight" msgid="6066029271198399632">"Gün işığı"</string>
-    <string name="pref_camera_whitebalance_entry_fluorescent" msgid="1957728582798422397">"Flüoressent"</string>
-    <string name="pref_camera_whitebalance_entry_cloudy" msgid="3695152185934196085">"Buludlu"</string>
-    <string name="pref_camera_whitebalance_label_auto" msgid="1152472201811061031">"AVTO"</string>
-    <string name="pref_camera_whitebalance_label_incandescent" msgid="8920127934705255947">"PARLAQ"</string>
-    <string name="pref_camera_whitebalance_label_daylight" msgid="3554450557101127960">"GÜNDÜZ İŞIĞI"</string>
-    <string name="pref_camera_whitebalance_label_fluorescent" msgid="3654887484979718684">"FLÜORESSENT"</string>
-    <string name="pref_camera_whitebalance_label_cloudy" msgid="7288490282713935868">"BULUDLU"</string>
-    <string name="pref_camera_scenemode_title" msgid="5200975368614697452">"Səhnə rejimi"</string>
-    <string name="pref_camera_scenemode_entry_auto" msgid="7511260833909115424">"Avto"</string>
-    <string name="pref_camera_scenemode_entry_hdr" msgid="1240176231782477736">"HDR"</string>
-    <string name="pref_camera_scenemode_entry_action" msgid="1837585145734214002">"Əməliyyat"</string>
-    <string name="pref_camera_scenemode_entry_night" msgid="7769610601562643051">"Gecə"</string>
-    <string name="pref_camera_scenemode_entry_sunset" msgid="8181732673387418710">"Günbatma"</string>
-    <string name="pref_camera_scenemode_entry_party" msgid="2053177794948141241">"Parti"</string>
-    <string name="pref_camera_scenemode_label_auto" msgid="3930776963493458919">"HEÇ BİRİ"</string>
-    <string name="pref_camera_scenemode_label_action" msgid="7770498283906927328">"HƏRƏKƏT"</string>
-    <string name="pref_camera_scenemode_label_night" msgid="502442339727709162">"GECƏ"</string>
-    <string name="pref_camera_scenemode_label_sunset" msgid="7721050709109503669">"QÜRUB"</string>
-    <string name="pref_camera_scenemode_label_party" msgid="8942534460201242073">"Parti"</string>
-    <string name="pref_camera_countdown_label_off" msgid="1200317172301019900">"Taymer deaktiv"</string>
-    <string name="pref_camera_countdown_label_one" msgid="7105722039618597195">"1 SANİYƏ"</string>
-    <string name="pref_camera_countdown_label_three" msgid="113172366823379525">"3 SANİYƏ"</string>
-    <string name="pref_camera_countdown_label_ten" msgid="8259680166571641702">"10 saniyə"</string>
-    <string name="pref_camera_countdown_label_fifteen" msgid="2251170484933984740">"15 SANİYƏ"</string>
-    <string name="not_selectable_in_scene_mode" msgid="4186538577214404106">"Səhnə rejimində seçmək olmur."</string>
-    <string name="pref_exposure_title" msgid="5211801488740367403">"Ekspozisiya"</string>
-    <string name="pref_exposure_label" msgid="5586132867242336300">"Ekspozisiya"</string>
-    <!-- no translation found for pref_camera_hdr_default (2725798708765488564) -->
-    <skip />
-    <string name="pref_camera_hdr_label" msgid="3566769675820087426">"HDR"</string>
-    <string name="pref_camera_id_label_back" msgid="6322318969185513097">"Ön kamera"</string>
-    <string name="pref_camera_id_label_front" msgid="3244743091065982114">"ARXA KAMERA"</string>
-    <string name="dialog_ok" msgid="8097436389338241320">"Ok"</string>
-    <string name="spaceIsLow_content" product="default" msgid="9172166257752848178">"SD kartınızın yaddaşı dolmaq üzrədir. Keyfiyyət ayarlarını dəyişin və ya şəkilləri, yaxud digər faylları silin."</string>
-    <string name="video_reach_size_limit" msgid="3243731908069056095">"Ölçü limiti doldu."</string>
-    <string name="pano_too_fast_prompt" msgid="992490587329437459">"Çox sürətli"</string>
-    <string name="pano_dialog_prepare_preview" msgid="7116632064591648365">"Panorama hazırlanır"</string>
-    <string name="pano_dialog_panorama_failed" msgid="1856809633978860743">"Panoramanı yadda saxlamaq mümkün olmadı."</string>
-    <string name="pano_dialog_title" msgid="7236715443943941505">"Panorama"</string>
-    <string name="pano_capture_indication" msgid="6826745806103872825">"Panorama Çəkilir"</string>
-    <string name="pano_dialog_waiting_previous" msgid="1379192572905837403">"Öncəki panorama gözlənilir"</string>
-    <string name="pano_review_saving_indication_str" msgid="7006233508921435129">"Yadda saxlanılır..."</string>
-    <string name="pano_review_rendering" msgid="7712584259126188763">"Panorama göstərilməsi"</string>
-    <string name="tap_to_focus" msgid="3031819623593720463">"Fokusa toxunun."</string>
-    <string name="pref_video_effect_title" msgid="2371174223707366255">"Effektlər"</string>
-    <string name="effect_none" msgid="1026487463817289779">"Heç biri"</string>
-    <string name="effect_goofy_face_squeeze" msgid="1286464707958852799">"Sıx"</string>
-    <string name="effect_goofy_face_big_eyes" msgid="6904511475216683450">"Böyük gözlər"</string>
-    <string name="effect_goofy_face_big_mouth" msgid="4037032365093279045">"Böyük ağız"</string>
-    <string name="effect_goofy_face_small_mouth" msgid="5950057962899410295">"Kiçik ağız"</string>
-    <string name="effect_goofy_face_big_nose" msgid="6225216990258277302">"Böyük burun"</string>
-    <string name="effect_goofy_face_small_eyes" msgid="547835991052738090">"Kiçik gözlər"</string>
-    <string name="effect_backdropper_space" msgid="5794499374151237559">"Kosmosda"</string>
-    <string name="effect_backdropper_sunset" msgid="2431035827232871903">"Günbatma"</string>
-    <string name="effect_backdropper_gallery" msgid="3292606781700530872">"Videonuz"</string>
-    <string name="video_snapshot_hint" msgid="56511446769261564">"Yazılış zamanı şəkil çəkmək üçün toxunun."</string>
-    <string name="video_recording_started" msgid="1478448043553326540">"Video çəklişi başlamışdır."</string>
-    <string name="video_recording_stopped" msgid="2676770458529207322">"Video çəkilişi dayanıb"</string>
-    <string name="clear_effects" msgid="155262355011195942">"Effektləri silin"</string>
-    <string name="effect_silly_faces" msgid="2764749499874707741">"Axmaq sifətlər"</string>
-    <string name="effect_background" msgid="2260438748276866983">"Fon"</string>
-    <string name="accessibility_shutter_button" msgid="442677115885353279">"Shutter"</string>
-    <string name="accessibility_menu_button" msgid="7265396535447770250">"Menyu düyməsi"</string>
-    <string name="accessibility_mode_picker" msgid="5708483984757534790">"Kamera, video və ya panorama seçicisi"</string>
-    <string name="accessibility_check_box" msgid="6190311654361323510">"%1$s qeyd qutusu"</string>
-    <string name="accessibility_switch_to_camera" msgid="8253443632354129201">"Fotoya keçirin"</string>
-    <string name="accessibility_switch_to_video" msgid="685379350229791000">"Videoya keçin"</string>
-    <string name="accessibility_switch_to_panorama" msgid="4367290605860986266">"Panoramaya keçin"</string>
-    <string name="accessibility_switch_to_photo_sphere" msgid="7282333436078515422">"Şəkil sahəsi keçid"</string>
-    <string name="accessibility_review_cancel" msgid="8233210011810145540">"Ləğvi gözdən keçir"</string>
-    <string name="accessibility_review_ok" msgid="1919818908740908312">"{z\'t"</string>
-    <string name="accessibility_review_retake" msgid="3256541538259494381">"Geri almaq inceleyin"</string>
-    <string name="capital_on" msgid="5840588038158274585">"AKTIV"</string>
-    <string name="capital_off" msgid="3199056669644846925">"QAPALI"</string>
-    <string name="pref_video_time_lapse_frame_interval_off" msgid="8999446316706593179">"Deaktiv"</string>
-    <string name="pref_video_time_lapse_frame_interval_500" msgid="8756750735297085410">"0,5 saniyə"</string>
-    <string name="pref_video_time_lapse_frame_interval_1000" msgid="7640704589637632218">"1 saniyə"</string>
-    <string name="pref_video_time_lapse_frame_interval_1500" msgid="8931945040035127831">"1,5 saniyə"</string>
-    <string name="pref_video_time_lapse_frame_interval_2000" msgid="3939716251293255146">"2 saniyə"</string>
-    <string name="pref_video_time_lapse_frame_interval_2500" msgid="7683749285828898630">"2,5 saniyə"</string>
-    <string name="pref_video_time_lapse_frame_interval_3000" msgid="780624543534219753">"3 saniyə"</string>
-    <string name="pref_video_time_lapse_frame_interval_4000" msgid="8889653143865462502">"4 saniyə"</string>
-    <string name="pref_video_time_lapse_frame_interval_5000" msgid="4102268340899789227">"5 saniyə"</string>
-    <string name="pref_video_time_lapse_frame_interval_6000" msgid="8603974284920017861">"6 saniyə"</string>
-    <string name="pref_video_time_lapse_frame_interval_10000" msgid="6650102184647775722">"10 saniyə"</string>
-    <string name="pref_video_time_lapse_frame_interval_12000" msgid="6753526423674050181">"12 saniyə"</string>
-    <string name="pref_video_time_lapse_frame_interval_15000" msgid="531646722496644257">"15 saniyə"</string>
-    <string name="pref_video_time_lapse_frame_interval_24000" msgid="290145063080413411">"24 saniyə"</string>
-    <string name="pref_video_time_lapse_frame_interval_30000" msgid="9079297914740012179">"0,5 dəqiqə"</string>
-    <string name="pref_video_time_lapse_frame_interval_60000" msgid="3020106068480066496">"1 dəqiqə"</string>
-    <string name="pref_video_time_lapse_frame_interval_90000" msgid="2685855786622077615">"1,5 dəqiqə"</string>
-    <string name="pref_video_time_lapse_frame_interval_120000" msgid="7314050129714846577">"2 dəqiqə"</string>
-    <string name="pref_video_time_lapse_frame_interval_150000" msgid="4554449247426773111">"2,5 dəqiqə"</string>
-    <string name="pref_video_time_lapse_frame_interval_180000" msgid="4567679385417134299">"3 dəqiqə"</string>
-    <string name="pref_video_time_lapse_frame_interval_240000" msgid="980170959249981779">"4 dəqiqə"</string>
-    <string name="pref_video_time_lapse_frame_interval_300000" msgid="4134060119540433901">"5 dəqiqə"</string>
-    <string name="pref_video_time_lapse_frame_interval_360000" msgid="2279953220469717307">"6 dəqiqə"</string>
-    <string name="pref_video_time_lapse_frame_interval_600000" msgid="262948882057819428">"10 dəqiqə"</string>
-    <string name="pref_video_time_lapse_frame_interval_720000" msgid="5025274021438060973">"12 dəqiqə"</string>
-    <string name="pref_video_time_lapse_frame_interval_900000" msgid="535122783273231729">"15 dəqiqə"</string>
-    <string name="pref_video_time_lapse_frame_interval_1440000" msgid="1389025940394108838">"24 dəqiqə"</string>
-    <string name="pref_video_time_lapse_frame_interval_1800000" msgid="3960495676390536948">"0,5 saat"</string>
-    <string name="pref_video_time_lapse_frame_interval_3600000" msgid="4967310075272642117">"1 saat"</string>
-    <string name="pref_video_time_lapse_frame_interval_5400000" msgid="4381496945219954612">"1,5 saat"</string>
-    <string name="pref_video_time_lapse_frame_interval_7200000" msgid="6542316368455276228">"2 saat"</string>
-    <string name="pref_video_time_lapse_frame_interval_9000000" msgid="7058722410153205915">"2,5 saat"</string>
-    <string name="pref_video_time_lapse_frame_interval_10800000" msgid="6261070817876538949">"3 saat"</string>
-    <string name="pref_video_time_lapse_frame_interval_14400000" msgid="6980220047958957353">"4 saat"</string>
-    <string name="pref_video_time_lapse_frame_interval_18000000" msgid="7199366553142266407">"5 saat"</string>
-    <string name="pref_video_time_lapse_frame_interval_21600000" msgid="5736484130500539985">"6 saat"</string>
-    <string name="pref_video_time_lapse_frame_interval_36000000" msgid="720554925530517471">"10 saat"</string>
-    <string name="pref_video_time_lapse_frame_interval_43200000" msgid="322398198717672456">"12 saat"</string>
-    <string name="pref_video_time_lapse_frame_interval_54000000" msgid="4545285575174744076">"15 saat"</string>
-    <string name="pref_video_time_lapse_frame_interval_86400000" msgid="225288451792149886">"24 saat"</string>
-    <string name="time_lapse_seconds" msgid="6338396613003859047">"saniyə"</string>
-    <string name="time_lapse_minutes" msgid="1610738675813013569">"dəqiqə"</string>
-    <string name="time_lapse_hours" msgid="2466092767364327518">"saatlar"</string>
-    <string name="time_lapse_interval_set" msgid="5430624261132317167">"Hazırdır"</string>
-    <string name="set_time_interval" msgid="844482952911185265">"Vaxt intervalı seçin"</string>
-    <string name="set_time_interval_help" msgid="1403571747238933001">"Vaxt aralığı özəlliyi deaktiv edilib. Vaxt intervalını ayarlamaq üçün onu aktivləşdirin."</string>
-    <string name="set_duration" msgid="7425045408900251919">"Müddəti saniyələrlə ayarlayı"</string>
-    <string name="count_down_title_text" msgid="8269417928362735617">"Foto çəkmək üçün geri sayılır"</string>
-    <string name="remember_location_title" msgid="2290717227833540397">"Foto məkanları yadda qalsın?"</string>
-    <string name="remember_location_prompt" msgid="6856517328973384896">"Fotolarınızı və videolarınızı çəkildikləri yerlərə teq edin.\n\nDigər tətbiqlər yadda saxladığınız şəkillərlə birlikdə bu məlumatları əldə edə bilər."</string>
-    <string name="remember_location_no" msgid="5160772992721036553">"Yox, çox sağ olun"</string>
-    <string name="remember_location_yes" msgid="4663333638854720964">"Bəli"</string>
-    <string name="camera_menu_more_label" msgid="3997839063378329544">"Daha çox seçim"</string>
-    <string name="camera_menu_settings_label" msgid="2038476709578884568">"AYARLAR"</string>
-</resources>
diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml
deleted file mode 100644
index 3674d07..0000000
--- a/res/values-ne-rNP/strings.xml
+++ /dev/null
@@ -1,281 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2007 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_name" msgid="8338864393568040722">"क्यामेरा"</string>
-    <string name="details_ms" msgid="4368407634456462224">"%1$02d:%2$02d"</string>
-    <string name="details_hms" msgid="681695897098326459">"%1$d:%2$02d:%3$02d"</string>
-    <string name="set_image" msgid="3011821258780340803">"को रूपमा तस्बिरलाई मिलाउनुहोस्"</string>
-    <string name="delete" msgid="7258764001896874869">"मेट्नुहोस्"</string>
-  <plurals name="delete_selection">
-    <item quantity="one" msgid="2984228592820245170">"चयन गरिएका आइटमलाई हटाउने हो?"</item>
-    <item quantity="other" msgid="882035505847338991">"छानिएका आइटमहरू हटाउने हो?"</item>
-  </plurals>
-    <string name="share" msgid="319799706929863109">"साझेदारी गर्नुहोस्"</string>
-    <string name="share_panorama" msgid="7488525470543070168">"दृश्य साझेदारी गर्नुहोस्"</string>
-    <string name="share_as_photo" msgid="8960831195285082544">"तस्बिरको रूपमा साझेदारी गर्नुहोस्"</string>
-    <string name="deleted" msgid="1144434522200481802">"मेटियो"</string>
-    <string name="undo" msgid="7561810819827468379">"अनडु गर्नुहोस्"</string>
-    <string name="details" msgid="3581943734736871564">"विवरणहरू"</string>
-    <string name="close" msgid="7196876073399885123">"बन्द गर्नुहोस्"</string>
-    <!-- String.format failed for translation -->
-    <!-- no translation found for number_of_items_selected:zero (629802015400399691) -->
-    <!-- String.format failed for translation -->
-    <!-- no translation found for number_of_items_selected:one (4283105620980058761) -->
-    <!-- String.format failed for translation -->
-    <!-- no translation found for number_of_items_selected:other (6433812272993337098) -->
-    <!-- String.format failed for translation -->
-    <!-- no translation found for number_of_albums_selected:zero (7322496523426352621) -->
-    <!-- String.format failed for translation -->
-    <!-- no translation found for number_of_albums_selected:one (3571296348626418242) -->
-    <!-- String.format failed for translation -->
-    <!-- no translation found for number_of_albums_selected:other (3103452138866993468) -->
-    <!-- String.format failed for translation -->
-    <!-- no translation found for number_of_groups_selected:zero (3312206920893882756) -->
-    <!-- String.format failed for translation -->
-    <!-- no translation found for number_of_groups_selected:one (7749557015923438739) -->
-    <!-- String.format failed for translation -->
-    <!-- no translation found for number_of_groups_selected:other (3562299676983425193) -->
-    <string name="show_on_map" msgid="1986264085815015696">"नक्सामा देखाउनुहोस्"</string>
-    <string name="rotate_left" msgid="6719855780237705569">"बायाँ घुमाउनुहोस्"</string>
-    <string name="rotate_right" msgid="8558343437940821771">"दायाँ घुमाउनुहोस्"</string>
-    <string name="edit" msgid="8457904262004517151">"सम्पादन गर्नुहोस्"</string>
-    <string name="crop_action" msgid="3281088975169422593">"क्रप गर्नुहोस्"</string>
-    <string name="trim_action" msgid="1912063594235898890">"छाँट्नुहोस्"</string>
-    <string name="set_as" msgid="7362777416265059096">"को रूपमा सेट गर्नुहोस्"</string>
-    <string name="video_err" msgid="6747342411484597130">"भिडियो चलाउन सकेन।"</string>
-    <string name="crop_saved" msgid="6708204358512805637">"काटिएको तस्बिरहरूलाई <xliff:g id="FOLDER_NAME">%s</xliff:g>मा सुरक्षित गरिएको छ।"</string>
-    <string name="title" msgid="1465174588508188840">"शीर्षक"</string>
-    <string name="description" msgid="7012551348834166615">"वर्णन"</string>
-    <string name="time" msgid="53680310933472250">"समय"</string>
-    <string name="location" msgid="7836832588874777265">"स्थान"</string>
-    <string name="path" msgid="7641372546343443225">"बाटो"</string>
-    <string name="width" msgid="4689895076320623907">"चौडाइ"</string>
-    <string name="height" msgid="3982701549798669179">"उचाइ"</string>
-    <string name="orientation" msgid="6270421867039429826">"अभिविन्यास"</string>
-    <string name="duration" msgid="1998783741258561149">"अवधि"</string>
-    <string name="mimetype" msgid="2655949175201126964">"MIME प्रकार"</string>
-    <string name="file_size" msgid="624610858632029292">"फाइल आकार:"</string>
-    <string name="maker" msgid="6997781789783937494">"निर्माता"</string>
-    <string name="model" msgid="1812030182695078529">"मोडेल"</string>
-    <string name="flash" msgid="8875025367055499744">"फ्ल्यास"</string>
-    <string name="aperture" msgid="4049918471495099840">"प्वाल"</string>
-    <string name="focal_length" msgid="7208863566011453148">"फोकल लम्बाइ:"</string>
-    <string name="white_balance" msgid="2638519262687012770">"श्वेत सन्तुलन"</string>
-    <string name="exposure_time" msgid="6992897250021008387">"एक्सपोजर समय"</string>
-    <string name="iso" msgid="4909058434077568534">"ISO"</string>
-    <string name="unit_mm" msgid="1893537204908056363">"मिलिमिटर"</string>
-    <string name="manual" msgid="7862595820452711108">"म्यानुएल"</string>
-    <string name="auto" msgid="6792260257128968793">"स्वतः"</string>
-    <string name="flash_on" msgid="4053187950402210000">"फ्ल्यास चलाइयो"</string>
-    <string name="flash_off" msgid="7313393221333362406">"फ्ल्यास छैन"</string>
-    <string name="unknown" msgid="2211992216750845926">"अज्ञात"</string>
-    <string name="try_to_set_local_album_available_offline" msgid="1084363257705484486">"यो वस्तु स्थानिय रूपमा भन्डारण गरिएको छ र अफलाइन उपलब्ध छ।"</string>
-    <string name="please_wait" msgid="99283054995831377">"कृपया प्रतीक्षा गर्नुहोस् ..."</string>
-    <string name="rendering_photo_sphere" msgid="6767345449862157889">"photo sphere प्रतिपादन"</string>
-    <string name="camera_error_title" msgid="434116066686973315">"क्यामेरा त्रुटि"</string>
-    <string name="cannot_connect_camera" msgid="3323690925318631453">"क्यामेरासँग जडान गर्न सक्दैन"</string>
-    <string name="camera_disabled" msgid="4927328535752421596">"सुरक्षा नीतिहरूका कारण क्यामरा निष्क्रिय गरिएको छ।"</string>
-    <string name="wait" msgid="2081747495953883435">"कृपया प्रतीक्षा गर्नुहोस्..."</string>
-    <string name="no_storage" product="default" msgid="5694411578108472132">"क्यामेराको उपयोग गर्नु अघि एउटा SD कार्ड भित्र राख्नुहोस्।"</string>
-    <string name="preparing_sd" product="default" msgid="5062635071578247325">"SD कार्ड तयार गरिँदै..."</string>
-    <string name="access_sd_fail" product="default" msgid="7705342436207795167">"SD कार्ड प्रयोग गर्न सकेन।"</string>
-    <string name="time_lapse_title" msgid="264021984782348139">"समय ल्याप्स रेकर्डिङ"</string>
-    <string name="pref_camera_id_title" msgid="8027686978170301915">"क्यामेरा चयन गर्नुहोस्"</string>
-    <string name="pref_camera_id_entry_back" msgid="8034690205259224353">"पछाडि जानुहोस्"</string>
-    <string name="pref_camera_id_entry_front" msgid="2982741805298041753">"अगाडि"</string>
-    <string name="pref_camera_recordlocation_title" msgid="9032205520216091730">"स्थान भण्डारण गर्नुहोस्"</string>
-    <string name="pref_camera_location_label" msgid="725236612912086608">"स्थान:"</string>
-    <string name="pref_camera_timer_title" msgid="6917581164323911874">"उल्टा गन्ने घडी"</string>
-  <plurals name="pref_camera_timer_entry">
-    <item quantity="one" msgid="8868342573738742056">"१ सेकेन्ड"</item>
-    <item quantity="other" msgid="3053084895126759755">"%d सेकेण्ड"</item>
-  </plurals>
-    <!-- no translation found for pref_camera_timer_sound_default (6748128807889344413) -->
-    <skip />
-    <string name="pref_camera_timer_sound_title" msgid="8640712080164781141">"उल्टा गर्ने क्रममा बिप"</string>
-    <string name="setting_off" msgid="3321226648786639381">"बन्द"</string>
-    <string name="setting_on" msgid="6658320155242340595">"खुला"</string>
-    <string name="pref_video_quality_title" msgid="133986891365610568">"भिडियो गुणस्तर"</string>
-    <string name="pref_video_quality_entry_high" msgid="2738623967850850381">"उच्च"</string>
-    <string name="pref_video_quality_entry_low" msgid="5153461037045200762">"कम"</string>
-    <string name="pref_video_time_lapse_frame_interval_title" msgid="5673396270006768004">"समय गल्ती"</string>
-    <string name="pref_camera_settings_category" msgid="4286755118301278593">"क्यामरा सेटिङहरू"</string>
-    <string name="pref_camcorder_settings_category" msgid="4617708050480193189">"क्यामकोडर सेटिङहरू"</string>
-    <string name="pref_camera_picturesize_title" msgid="7285867796470070880">"चित्र आकार"</string>
-    <string name="pref_camera_picturesize_entry_13mp" msgid="3084140665950405601">"13M पिक्सेल"</string>
-    <string name="pref_camera_picturesize_entry_8mp" msgid="6497793506352769366">"8M पिक्सल"</string>
-    <string name="pref_camera_picturesize_entry_5mp" msgid="8813718385379530965">"5M पिक्सेल"</string>
-    <string name="pref_camera_picturesize_entry_4mp" msgid="8546276478576735924">"4M पिक्सेल"</string>
-    <string name="pref_camera_picturesize_entry_3mp" msgid="6233692859150247237">"3M पिक्सल"</string>
-    <string name="pref_camera_picturesize_entry_2mp" msgid="542341433431186453">"२ मेगा पिक्सेल"</string>
-    <string name="pref_camera_picturesize_entry_2mp_wide" msgid="607495602129189476">"2M पिक्सेल (16:9)"</string>
-    <string name="pref_camera_picturesize_entry_1_3mp" msgid="2279105572299544416">"1.3M पिक्सेल"</string>
-    <string name="pref_camera_picturesize_entry_1mp" msgid="4015199907773658431">"१ मेगा पिक्सेल"</string>
-    <string name="pref_camera_picturesize_entry_vga" msgid="5417241189390562935">"VGA"</string>
-    <string name="pref_camera_picturesize_entry_qvga" msgid="5211497128670067462">"QVGA"</string>
-    <string name="pref_camera_focusmode_title" msgid="4675290599521989576">"फोकस मोड"</string>
-    <string name="pref_camera_focusmode_entry_auto" msgid="2359207328353055475">"स्वतः"</string>
-    <string name="pref_camera_focusmode_entry_infinity" msgid="2864044462778663709">"अनन्तता"</string>
-    <string name="pref_camera_focusmode_entry_macro" msgid="3737080531231192249">"बृहद्"</string>
-    <string name="pref_camera_focusmode_label_auto" msgid="3156723882642048128">"स्वतः"</string>
-    <string name="pref_camera_focusmode_label_infinity" msgid="7911889349060603983">"अनन्तता"</string>
-    <string name="pref_camera_focusmode_label_macro" msgid="4573817863140007172">"बृहद्"</string>
-    <string name="pref_camera_flashmode_title" msgid="4037454739283955642">"फ्ल्यास मोड"</string>
-    <string name="pref_camera_flashmode_label" msgid="6684291276546279860">"फल्यास मोड"</string>
-    <string name="pref_camera_flashmode_entry_auto" msgid="415227229724303061">"स्वतः"</string>
-    <string name="pref_camera_flashmode_entry_on" msgid="88773476344754314">"खुला"</string>
-    <string name="pref_camera_flashmode_entry_off" msgid="8251029141614172527">"बन्द"</string>
-    <string name="pref_camera_flashmode_label_auto" msgid="3099050003430647170">"फ्ल्यास अटो"</string>
-    <string name="pref_camera_flashmode_label_on" msgid="2719503527558187559">"फ्ल्यास खुला"</string>
-    <string name="pref_camera_flashmode_label_off" msgid="1018914822085714107">"फ्ल्यास बन्द"</string>
-    <string name="pref_camera_whitebalance_title" msgid="3555176845614423913">"श्वेत सन्तुलन"</string>
-    <string name="pref_camera_whitebalance_label" msgid="4253164949812366852">"स्वेत सन्तुलन"</string>
-    <string name="pref_camera_whitebalance_entry_auto" msgid="8495359619521890418">"स्वतः"</string>
-    <string name="pref_camera_whitebalance_entry_incandescent" msgid="374516940783347212">"चम्कन"</string>
-    <string name="pref_camera_whitebalance_entry_daylight" msgid="6066029271198399632">"दिनको प्रकाश"</string>
-    <string name="pref_camera_whitebalance_entry_fluorescent" msgid="1957728582798422397">"फ्लोरेसेन्ट"</string>
-    <string name="pref_camera_whitebalance_entry_cloudy" msgid="3695152185934196085">"बादलु"</string>
-    <string name="pref_camera_whitebalance_label_auto" msgid="1152472201811061031">"स्वतः"</string>
-    <string name="pref_camera_whitebalance_label_incandescent" msgid="8920127934705255947">"चम्कने"</string>
-    <string name="pref_camera_whitebalance_label_daylight" msgid="3554450557101127960">"दिनको प्रकाश"</string>
-    <string name="pref_camera_whitebalance_label_fluorescent" msgid="3654887484979718684">"फ्लोरेसेन्ट"</string>
-    <string name="pref_camera_whitebalance_label_cloudy" msgid="7288490282713935868">"बादलु"</string>
-    <string name="pref_camera_scenemode_title" msgid="5200975368614697452">"दृश्य मोड"</string>
-    <string name="pref_camera_scenemode_entry_auto" msgid="7511260833909115424">"स्वतः"</string>
-    <string name="pref_camera_scenemode_entry_hdr" msgid="1240176231782477736">"HDR"</string>
-    <string name="pref_camera_scenemode_entry_action" msgid="1837585145734214002">"कार्य"</string>
-    <string name="pref_camera_scenemode_entry_night" msgid="7769610601562643051">"रात"</string>
-    <string name="pref_camera_scenemode_entry_sunset" msgid="8181732673387418710">"सूर्यास्त"</string>
-    <string name="pref_camera_scenemode_entry_party" msgid="2053177794948141241">"भोज"</string>
-    <string name="pref_camera_scenemode_label_auto" msgid="3930776963493458919">"कुनै पनि होइन"</string>
-    <string name="pref_camera_scenemode_label_action" msgid="7770498283906927328">"कार्य"</string>
-    <string name="pref_camera_scenemode_label_night" msgid="502442339727709162">"रात"</string>
-    <string name="pref_camera_scenemode_label_sunset" msgid="7721050709109503669">"सूर्यास्त"</string>
-    <string name="pref_camera_scenemode_label_party" msgid="8942534460201242073">"भोज"</string>
-    <string name="pref_camera_countdown_label_off" msgid="1200317172301019900">"घडी बन्द"</string>
-    <string name="pref_camera_countdown_label_one" msgid="7105722039618597195">"१ सेकेन्ड"</string>
-    <string name="pref_camera_countdown_label_three" msgid="113172366823379525">"३ सेकेन्ड"</string>
-    <string name="pref_camera_countdown_label_ten" msgid="8259680166571641702">"१० सेकेन्ड"</string>
-    <string name="pref_camera_countdown_label_fifteen" msgid="2251170484933984740">"१५ सेकेन्ड"</string>
-    <string name="not_selectable_in_scene_mode" msgid="4186538577214404106">"दृश्य मोडमा चयनयोग्य हुँदैन।"</string>
-    <string name="pref_exposure_title" msgid="5211801488740367403">"एक्सपोजर"</string>
-    <string name="pref_exposure_label" msgid="5586132867242336300">"खुल्ला"</string>
-    <!-- no translation found for pref_camera_hdr_default (2725798708765488564) -->
-    <skip />
-    <string name="pref_camera_hdr_label" msgid="3566769675820087426">"HDR"</string>
-    <string name="pref_camera_id_label_back" msgid="6322318969185513097">"अगाडिको क्यामेरा"</string>
-    <string name="pref_camera_id_label_front" msgid="3244743091065982114">"पछाडिको क्यामेरा"</string>
-    <string name="dialog_ok" msgid="8097436389338241320">"ठीक छ"</string>
-    <string name="spaceIsLow_content" product="default" msgid="9172166257752848178">"तपाईँको SD कार्डको स्पेस सकिँदै छ। गुणस्तर सेटिङ परिवर्तन गर्नुहोस् अथवा केही तस्बिरहरू वा अन्य फाइलहरू मेट्नुहोस्।"</string>
-    <string name="video_reach_size_limit" msgid="3243731908069056095">"आकार सीमा पुग्यो।"</string>
-    <string name="pano_too_fast_prompt" msgid="992490587329437459">"अति छिटो"</string>
-    <string name="pano_dialog_prepare_preview" msgid="7116632064591648365">"दृश्य तयार गरिँदै"</string>
-    <string name="pano_dialog_panorama_failed" msgid="1856809633978860743">"दृश्य सुरक्षित गर्न सकेन।"</string>
-    <string name="pano_dialog_title" msgid="7236715443943941505">"परिदृश्य"</string>
-    <string name="pano_capture_indication" msgid="6826745806103872825">"दृश्य खिच्दै"</string>
-    <string name="pano_dialog_waiting_previous" msgid="1379192572905837403">"अघिल्लो दृश्यको प्रतिक्षा गर्दै।"</string>
-    <string name="pano_review_saving_indication_str" msgid="7006233508921435129">"सुरक्षि गर्दै...."</string>
-    <string name="pano_review_rendering" msgid="7712584259126188763">"दृश्य प्रतिपादन"</string>
-    <string name="tap_to_focus" msgid="3031819623593720463">"फोकस गर्न छुनुहोस्।"</string>
-    <string name="pref_video_effect_title" msgid="2371174223707366255">"प्रभावहरू"</string>
-    <string name="effect_none" msgid="1026487463817289779">"कुनै पनि होइन"</string>
-    <string name="effect_goofy_face_squeeze" msgid="1286464707958852799">"निचोर्नुहोस्"</string>
-    <string name="effect_goofy_face_big_eyes" msgid="6904511475216683450">"ठूला आँखा"</string>
-    <string name="effect_goofy_face_big_mouth" msgid="4037032365093279045">"ठूलो मुख"</string>
-    <string name="effect_goofy_face_small_mouth" msgid="5950057962899410295">"सानो मुख"</string>
-    <string name="effect_goofy_face_big_nose" msgid="6225216990258277302">"ठूलो नाक"</string>
-    <string name="effect_goofy_face_small_eyes" msgid="547835991052738090">"साना आँखाहरू"</string>
-    <string name="effect_backdropper_space" msgid="5794499374151237559">"अन्तरिक्षमा"</string>
-    <string name="effect_backdropper_sunset" msgid="2431035827232871903">"सूर्यास्त"</string>
-    <string name="effect_backdropper_gallery" msgid="3292606781700530872">"तपाईँको भिडियो"</string>
-    <string name="video_snapshot_hint" msgid="56511446769261564">"खिचिरहेको बेला तस्बिर लिनको लागि छुनुहोस्।"</string>
-    <string name="video_recording_started" msgid="1478448043553326540">"भिडियो खिच्न सुरु भएको छ।"</string>
-    <string name="video_recording_stopped" msgid="2676770458529207322">"भिडियो खिच्न रोकिएको छ।"</string>
-    <string name="clear_effects" msgid="155262355011195942">"स्पष्ट प्रभावहरू"</string>
-    <string name="effect_silly_faces" msgid="2764749499874707741">"मूर्ख अनुहारहरू"</string>
-    <string name="effect_background" msgid="2260438748276866983">"पृष्ठभूमि"</string>
-    <string name="accessibility_shutter_button" msgid="442677115885353279">"सटर"</string>
-    <string name="accessibility_menu_button" msgid="7265396535447770250">"मेनु बटन"</string>
-    <string name="accessibility_mode_picker" msgid="5708483984757534790">"क्यामेरा, भिडियो वा दृश्य चयनकर्ता"</string>
-    <!-- String.format failed for translation -->
-    <!-- no translation found for accessibility_check_box (6190311654361323510) -->
-    <skip />
-    <string name="accessibility_switch_to_camera" msgid="8253443632354129201">"फोटामा स्विच गर्नुहोस्"</string>
-    <string name="accessibility_switch_to_video" msgid="685379350229791000">"भिडियोमा स्विच गर्नुहोस्"</string>
-    <string name="accessibility_switch_to_panorama" msgid="4367290605860986266">"दृश्यमा स्विच गर्नुहोस्"</string>
-    <string name="accessibility_switch_to_photo_sphere" msgid="7282333436078515422">"Photo Sphere मा स्विच गर्नुहोस्"</string>
-    <string name="accessibility_review_cancel" msgid="8233210011810145540">"समीक्षा रद्द गर्नुहोस्"</string>
-    <string name="accessibility_review_ok" msgid="1919818908740908312">"समीक्षा गरियो"</string>
-    <string name="accessibility_review_retake" msgid="3256541538259494381">"समीक्षा पुनः लिनुहोस्"</string>
-    <string name="capital_on" msgid="5840588038158274585">"खुला"</string>
-    <string name="capital_off" msgid="3199056669644846925">"बन्द"</string>
-    <string name="pref_video_time_lapse_frame_interval_off" msgid="8999446316706593179">"बन्द"</string>
-    <string name="pref_video_time_lapse_frame_interval_500" msgid="8756750735297085410">"०.५ सेकेन्ड"</string>
-    <string name="pref_video_time_lapse_frame_interval_1000" msgid="7640704589637632218">"१ सेकेन्ड"</string>
-    <string name="pref_video_time_lapse_frame_interval_1500" msgid="8931945040035127831">"१.५ सेकेन्ड"</string>
-    <string name="pref_video_time_lapse_frame_interval_2000" msgid="3939716251293255146">"२ सेकेन्ड"</string>
-    <string name="pref_video_time_lapse_frame_interval_2500" msgid="7683749285828898630">"२.५ सेकेन्ड"</string>
-    <string name="pref_video_time_lapse_frame_interval_3000" msgid="780624543534219753">"३ सेकेन्ड"</string>
-    <string name="pref_video_time_lapse_frame_interval_4000" msgid="8889653143865462502">"४ सेकेन्ड"</string>
-    <string name="pref_video_time_lapse_frame_interval_5000" msgid="4102268340899789227">"५ सेकेन्ड"</string>
-    <string name="pref_video_time_lapse_frame_interval_6000" msgid="8603974284920017861">"६ सेकेन्ड"</string>
-    <string name="pref_video_time_lapse_frame_interval_10000" msgid="6650102184647775722">"१० सेकेन्ड"</string>
-    <string name="pref_video_time_lapse_frame_interval_12000" msgid="6753526423674050181">"१२ सेकेन्ड"</string>
-    <string name="pref_video_time_lapse_frame_interval_15000" msgid="531646722496644257">"१५ सेकेन्ड"</string>
-    <string name="pref_video_time_lapse_frame_interval_24000" msgid="290145063080413411">"२ सेकेन्ड"</string>
-    <string name="pref_video_time_lapse_frame_interval_30000" msgid="9079297914740012179">"०.५ मिनट"</string>
-    <string name="pref_video_time_lapse_frame_interval_60000" msgid="3020106068480066496">"१ मिनेट"</string>
-    <string name="pref_video_time_lapse_frame_interval_90000" msgid="2685855786622077615">"१.५ मिनेट"</string>
-    <string name="pref_video_time_lapse_frame_interval_120000" msgid="7314050129714846577">"२ मिनेट"</string>
-    <string name="pref_video_time_lapse_frame_interval_150000" msgid="4554449247426773111">"२.५ मिनेट"</string>
-    <string name="pref_video_time_lapse_frame_interval_180000" msgid="4567679385417134299">"३ मिनेट"</string>
-    <string name="pref_video_time_lapse_frame_interval_240000" msgid="980170959249981779">"४ मिनेट"</string>
-    <string name="pref_video_time_lapse_frame_interval_300000" msgid="4134060119540433901">"५ मिनेट"</string>
-    <string name="pref_video_time_lapse_frame_interval_360000" msgid="2279953220469717307">"६ मिनेट"</string>
-    <string name="pref_video_time_lapse_frame_interval_600000" msgid="262948882057819428">"१० मिनेट"</string>
-    <string name="pref_video_time_lapse_frame_interval_720000" msgid="5025274021438060973">"१२ मिनेट"</string>
-    <string name="pref_video_time_lapse_frame_interval_900000" msgid="535122783273231729">"१५ मिनेट"</string>
-    <string name="pref_video_time_lapse_frame_interval_1440000" msgid="1389025940394108838">"२४ मिनेट"</string>
-    <string name="pref_video_time_lapse_frame_interval_1800000" msgid="3960495676390536948">"०.५ घन्टा"</string>
-    <string name="pref_video_time_lapse_frame_interval_3600000" msgid="4967310075272642117">"१ घन्टा"</string>
-    <string name="pref_video_time_lapse_frame_interval_5400000" msgid="4381496945219954612">"१.५ घन्टा"</string>
-    <string name="pref_video_time_lapse_frame_interval_7200000" msgid="6542316368455276228">"२ घन्टा"</string>
-    <string name="pref_video_time_lapse_frame_interval_9000000" msgid="7058722410153205915">"२.५ घन्टा"</string>
-    <string name="pref_video_time_lapse_frame_interval_10800000" msgid="6261070817876538949">"३ घन्टा"</string>
-    <string name="pref_video_time_lapse_frame_interval_14400000" msgid="6980220047958957353">"४ घन्टा"</string>
-    <string name="pref_video_time_lapse_frame_interval_18000000" msgid="7199366553142266407">"५ घन्टा"</string>
-    <string name="pref_video_time_lapse_frame_interval_21600000" msgid="5736484130500539985">"६ घन्टा"</string>
-    <string name="pref_video_time_lapse_frame_interval_36000000" msgid="720554925530517471">"१० घन्टा"</string>
-    <string name="pref_video_time_lapse_frame_interval_43200000" msgid="322398198717672456">"१२ घन्टा"</string>
-    <string name="pref_video_time_lapse_frame_interval_54000000" msgid="4545285575174744076">"१५ घन्टा"</string>
-    <string name="pref_video_time_lapse_frame_interval_86400000" msgid="225288451792149886">"२४ घन्टा"</string>
-    <string name="time_lapse_seconds" msgid="6338396613003859047">"सेकोन्ड"</string>
-    <string name="time_lapse_minutes" msgid="1610738675813013569">"मिनेट"</string>
-    <string name="time_lapse_hours" msgid="2466092767364327518">"घन्टा"</string>
-    <string name="time_lapse_interval_set" msgid="5430624261132317167">"भयो"</string>
-    <string name="set_time_interval" msgid="844482952911185265">"समय मध्यान्तर सेट गर्नुहोस्"</string>
-    <string name="set_time_interval_help" msgid="1403571747238933001">"समय ल्याप्स सुविधा बन्द छ। समय मध्यान्तर मिलाउन यसलाई खोल्नुहोस्।"</string>
-    <string name="set_duration" msgid="7425045408900251919">"सेकेन्डमा अवधि निर्धारित गर्नुहोस्"</string>
-    <string name="count_down_title_text" msgid="8269417928362735617">"एउटा तस्बिर लिनका लागि उल्टो गन्दै"</string>
-    <string name="remember_location_title" msgid="2290717227833540397">"फोटा स्थानहरू याद गर्नुहोस?"</string>
-    <string name="remember_location_prompt" msgid="6856517328973384896">"जहाँ लिइएको स्थानका साथ आफ्ना फोटा र भिडियोहरू ट्याग गर्नुहोस्। \n \n तपाईँले सुरक्षित गरेका तस्बिरहरूका साथै अरू अनुप्रयोगहरूले यी जानकारीहरू उपयोग गर्न सक्छन्।"</string>
-    <string name="remember_location_no" msgid="5160772992721036553">"धन्यवाद पर्दैन"</string>
-    <string name="remember_location_yes" msgid="4663333638854720964">"हो"</string>
-    <string name="camera_menu_more_label" msgid="3997839063378329544">"अरू विकल्पहरू"</string>
-    <string name="camera_menu_settings_label" msgid="2038476709578884568">"सेटिङहरू"</string>
-</resources>
diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml
deleted file mode 100644
index 5c26948..0000000
--- a/res/values-si-rLK/strings.xml
+++ /dev/null
@@ -1,276 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2007 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_name" msgid="8338864393568040722">"කැමරාව"</string>
-    <string name="details_ms" msgid="4368407634456462224">"%1$02d:%2$02d"</string>
-    <string name="details_hms" msgid="681695897098326459">"%1$d:%2$02d:%3$02d"</string>
-    <string name="set_image" msgid="3011821258780340803">"ලෙස පින්තූරය සකසන්න"</string>
-    <string name="delete" msgid="7258764001896874869">"මකන්න"</string>
-  <plurals name="delete_selection">
-    <item quantity="one" msgid="2984228592820245170">"තෝරගත් අයිතමය මකන්නද?"</item>
-    <item quantity="other" msgid="882035505847338991">"තෝරාගත් අයිතම මකන්නද?"</item>
-  </plurals>
-    <string name="share" msgid="319799706929863109">"බෙදාගන්න"</string>
-    <string name="share_panorama" msgid="7488525470543070168">"පරිදර්ශනය බෙදා ගන්න"</string>
-    <string name="share_as_photo" msgid="8960831195285082544">"ඡායාරූපය ලෙස බෙදා ගන්න"</string>
-    <string name="deleted" msgid="1144434522200481802">"මකාදමන ලදි"</string>
-    <string name="undo" msgid="7561810819827468379">"අස් කරන්න"</string>
-    <string name="details" msgid="3581943734736871564">"විස්තර"</string>
-    <string name="close" msgid="7196876073399885123">"වසන්න"</string>
-  <plurals name="number_of_items_selected">
-    <item quantity="zero" msgid="629802015400399691">"%1$d තෝරා ගන්නා ලදි"</item>
-    <item quantity="one" msgid="4283105620980058761">"%1$d තෝරා ගන්නා ලදි"</item>
-    <item quantity="other" msgid="6433812272993337098">"%1$d තෝරා ගන්නා ලදි"</item>
-  </plurals>
-  <plurals name="number_of_albums_selected">
-    <item quantity="zero" msgid="7322496523426352621">"%1$d තෝරා ගන්නා ලදි"</item>
-    <item quantity="one" msgid="3571296348626418242">"%1$d තෝරා ගන්නා ලදි"</item>
-    <item quantity="other" msgid="3103452138866993468">"%1$d තෝරා ගන්නා ලදි"</item>
-  </plurals>
-  <plurals name="number_of_groups_selected">
-    <item quantity="zero" msgid="3312206920893882756">"%1$d තෝරා ගන්නා ලදි"</item>
-    <item quantity="one" msgid="7749557015923438739">"%1$d තෝරා ගන්නා ලදි"</item>
-    <item quantity="other" msgid="3562299676983425193">"%1$d තෝරා ගන්නා ලදි"</item>
-  </plurals>
-    <string name="show_on_map" msgid="1986264085815015696">"සිතියම මත පෙන්වන්න"</string>
-    <string name="rotate_left" msgid="6719855780237705569">"වමට කරකවන්න"</string>
-    <string name="rotate_right" msgid="8558343437940821771">"දකුණට හරවන්න"</string>
-    <string name="edit" msgid="8457904262004517151">"සංස්කරණය කරන්න"</string>
-    <string name="crop_action" msgid="3281088975169422593">"කප්පාදු කිරීම"</string>
-    <string name="trim_action" msgid="1912063594235898890">"අහුකොන් කපන්න"</string>
-    <string name="set_as" msgid="7362777416265059096">"ලෙස සකසන්න"</string>
-    <string name="video_err" msgid="6747342411484597130">"වීඩියෝව ධාවනය කළ නොහැක."</string>
-    <string name="crop_saved" msgid="6708204358512805637">"<xliff:g id="FOLDER_NAME">%s</xliff:g> වෙත කප්පාදු කළ පින්තුරය සුරැකිණි."</string>
-    <string name="title" msgid="1465174588508188840">"මාතෘකාව"</string>
-    <string name="description" msgid="7012551348834166615">"විස්තරය"</string>
-    <string name="time" msgid="53680310933472250">"වේලාව"</string>
-    <string name="location" msgid="7836832588874777265">"ස්ථානය"</string>
-    <string name="path" msgid="7641372546343443225">"මග"</string>
-    <string name="width" msgid="4689895076320623907">"පළල"</string>
-    <string name="height" msgid="3982701549798669179">"උස"</string>
-    <string name="orientation" msgid="6270421867039429826">"දිශානතිය"</string>
-    <string name="duration" msgid="1998783741258561149">"කාල සීමාව"</string>
-    <string name="mimetype" msgid="2655949175201126964">"MIME වර්ගය"</string>
-    <string name="file_size" msgid="624610858632029292">"ගොනු ප්‍රමාණය"</string>
-    <string name="maker" msgid="6997781789783937494">"නිමැවුම්කරු"</string>
-    <string name="model" msgid="1812030182695078529">"අනුකෘතිය"</string>
-    <string name="flash" msgid="8875025367055499744">"සැණෙලිය"</string>
-    <string name="aperture" msgid="4049918471495099840">"විවරය"</string>
-    <string name="focal_length" msgid="7208863566011453148">"නාභි දුර"</string>
-    <string name="white_balance" msgid="2638519262687012770">"සුදු සමබරතාව"</string>
-    <string name="exposure_time" msgid="6992897250021008387">"නිරාවරණ කාලය"</string>
-    <string name="iso" msgid="4909058434077568534">"ISO"</string>
-    <string name="unit_mm" msgid="1893537204908056363">"mm"</string>
-    <string name="manual" msgid="7862595820452711108">"අතින් කරන"</string>
-    <string name="auto" msgid="6792260257128968793">"ස්වයං"</string>
-    <string name="flash_on" msgid="4053187950402210000">"සැණෙලි පත්තු කරන ලදී"</string>
-    <string name="flash_off" msgid="7313393221333362406">"සැණෙලි නැත"</string>
-    <string name="unknown" msgid="2211992216750845926">"නොදනී"</string>
-    <string name="try_to_set_local_album_available_offline" msgid="1084363257705484486">"මෙම අයිතමය ස්ථානිකව ගබඩා කර ඇති අතර නොබැඳිව ලබා ගත හැක."</string>
-    <string name="please_wait" msgid="99283054995831377">"කරුණාකර රැඳී සිටින්න"</string>
-    <string name="rendering_photo_sphere" msgid="6767345449862157889">"ෆොටෝ ස්පීයර් ප්‍රවාචනය කරමින්"</string>
-    <string name="camera_error_title" msgid="434116066686973315">"කැමරා දෝෂය"</string>
-    <string name="cannot_connect_camera" msgid="3323690925318631453">"කැමරාව වෙත සම්බන්ධ කළ නොහැක."</string>
-    <string name="camera_disabled" msgid="4927328535752421596">"ආරක්ෂණ ප්‍රතිපත්ති නිසා කැමරාව අබල කර ඇත."</string>
-    <string name="wait" msgid="2081747495953883435">"කරුණාකර රැඳී සිටින්න..."</string>
-    <string name="no_storage" product="default" msgid="5694411578108472132">"කැමරාව භාවිතා කිරීමට පෙර SD කාඩ් පතක් ඇතුලු කරන්න."</string>
-    <string name="preparing_sd" product="default" msgid="5062635071578247325">"SD කාඩ්පත පිළියෙළ කෙරේ…"</string>
-    <string name="access_sd_fail" product="default" msgid="7705342436207795167">"SD කාඩ් පතට ප්‍රවේශ විය නොහැක."</string>
-    <string name="time_lapse_title" msgid="264021984782348139">"කාලය ඉකුත්වීමේ පටිගත කිරීම"</string>
-    <string name="pref_camera_id_title" msgid="8027686978170301915">"කැමරාව තෝරන්න"</string>
-    <string name="pref_camera_id_entry_back" msgid="8034690205259224353">"ආපසු"</string>
-    <string name="pref_camera_id_entry_front" msgid="2982741805298041753">"ඉදිරිපස"</string>
-    <string name="pref_camera_recordlocation_title" msgid="9032205520216091730">"ආචය ස්ථානය"</string>
-    <string name="pref_camera_location_label" msgid="725236612912086608">"ස්ථානය"</string>
-    <string name="pref_camera_timer_title" msgid="6917581164323911874">"ආපස්සට ගණන් කිරීමේ කාල ගණකය"</string>
-  <plurals name="pref_camera_timer_entry">
-    <item quantity="one" msgid="8868342573738742056">"තත්පර 1"</item>
-    <item quantity="other" msgid="3053084895126759755">"තත්පර %d"</item>
-  </plurals>
-    <!-- no translation found for pref_camera_timer_sound_default (6748128807889344413) -->
-    <skip />
-    <string name="pref_camera_timer_sound_title" msgid="8640712080164781141">"ආපස්සට ගණන් කිරීමේ බීප් නාදය"</string>
-    <string name="setting_off" msgid="3321226648786639381">"අක්‍රියයි"</string>
-    <string name="setting_on" msgid="6658320155242340595">"සක්‍රිය කරන්න"</string>
-    <string name="pref_video_quality_title" msgid="133986891365610568">"වීඩියෝ ගුණත්වය"</string>
-    <string name="pref_video_quality_entry_high" msgid="2738623967850850381">"ඉහළ"</string>
-    <string name="pref_video_quality_entry_low" msgid="5153461037045200762">"පහළ"</string>
-    <string name="pref_video_time_lapse_frame_interval_title" msgid="5673396270006768004">"කාලය ඉකුත්වීම"</string>
-    <string name="pref_camera_settings_category" msgid="4286755118301278593">"කැමරා සැකසීම්"</string>
-    <string name="pref_camcorder_settings_category" msgid="4617708050480193189">"කැම්කෝඩර සැකසීම්"</string>
-    <string name="pref_camera_picturesize_title" msgid="7285867796470070880">"පින්තූර ප්‍රමාණය"</string>
-    <string name="pref_camera_picturesize_entry_13mp" msgid="3084140665950405601">"පික්සල් 13M"</string>
-    <string name="pref_camera_picturesize_entry_8mp" msgid="6497793506352769366">"පික්සල 8M"</string>
-    <string name="pref_camera_picturesize_entry_5mp" msgid="8813718385379530965">"පික්සල 5M"</string>
-    <string name="pref_camera_picturesize_entry_4mp" msgid="8546276478576735924">"4M පික්සල්"</string>
-    <string name="pref_camera_picturesize_entry_3mp" msgid="6233692859150247237">"පික්සල 3M"</string>
-    <string name="pref_camera_picturesize_entry_2mp" msgid="542341433431186453">"පික්සල 2M"</string>
-    <string name="pref_camera_picturesize_entry_2mp_wide" msgid="607495602129189476">"2M පික්සල් (16:9)"</string>
-    <string name="pref_camera_picturesize_entry_1_3mp" msgid="2279105572299544416">"පික්සල 1.3M"</string>
-    <string name="pref_camera_picturesize_entry_1mp" msgid="4015199907773658431">"පික්සල 1M"</string>
-    <string name="pref_camera_picturesize_entry_vga" msgid="5417241189390562935">"VGA"</string>
-    <string name="pref_camera_picturesize_entry_qvga" msgid="5211497128670067462">"QVGA"</string>
-    <string name="pref_camera_focusmode_title" msgid="4675290599521989576">"නාභිගත ප්‍රකාරය"</string>
-    <string name="pref_camera_focusmode_entry_auto" msgid="2359207328353055475">"ස්වයං"</string>
-    <string name="pref_camera_focusmode_entry_infinity" msgid="2864044462778663709">"අනන්තය"</string>
-    <string name="pref_camera_focusmode_entry_macro" msgid="3737080531231192249">"මැක්‍රො"</string>
-    <string name="pref_camera_focusmode_label_auto" msgid="3156723882642048128">"ස්වයංක්‍රීය"</string>
-    <string name="pref_camera_focusmode_label_infinity" msgid="7911889349060603983">"අනන්තය"</string>
-    <string name="pref_camera_focusmode_label_macro" msgid="4573817863140007172">"මැක්‍රො"</string>
-    <string name="pref_camera_flashmode_title" msgid="4037454739283955642">"සැණෙළි ප්‍රකාරය"</string>
-    <string name="pref_camera_flashmode_label" msgid="6684291276546279860">"සැණෙළි ආකාරය"</string>
-    <string name="pref_camera_flashmode_entry_auto" msgid="415227229724303061">"ස්වයං"</string>
-    <string name="pref_camera_flashmode_entry_on" msgid="88773476344754314">"සක්‍රිය කරන්න"</string>
-    <string name="pref_camera_flashmode_entry_off" msgid="8251029141614172527">"අක්‍රියයි"</string>
-    <string name="pref_camera_flashmode_label_auto" msgid="3099050003430647170">"සැණෙලි ස්වයං"</string>
-    <string name="pref_camera_flashmode_label_on" msgid="2719503527558187559">"සැණෙලිය සක්‍රියයි"</string>
-    <string name="pref_camera_flashmode_label_off" msgid="1018914822085714107">"සැණෙළිය අක්‍රියයි"</string>
-    <string name="pref_camera_whitebalance_title" msgid="3555176845614423913">"සුදු සමබරතාව"</string>
-    <string name="pref_camera_whitebalance_label" msgid="4253164949812366852">"සුදු සමබරතාවය"</string>
-    <string name="pref_camera_whitebalance_entry_auto" msgid="8495359619521890418">"ස්වයං"</string>
-    <string name="pref_camera_whitebalance_entry_incandescent" msgid="374516940783347212">"තාපදීප්ත"</string>
-    <string name="pref_camera_whitebalance_entry_daylight" msgid="6066029271198399632">"දිවා ආලෝකය"</string>
-    <string name="pref_camera_whitebalance_entry_fluorescent" msgid="1957728582798422397">"ප්‍රතිදීපන"</string>
-    <string name="pref_camera_whitebalance_entry_cloudy" msgid="3695152185934196085">"වලාකුළු සහිත"</string>
-    <string name="pref_camera_whitebalance_label_auto" msgid="1152472201811061031">"ස්වයංක්‍රීය"</string>
-    <string name="pref_camera_whitebalance_label_incandescent" msgid="8920127934705255947">"තාපදීප්ත"</string>
-    <string name="pref_camera_whitebalance_label_daylight" msgid="3554450557101127960">"දිවා ආලෝකය"</string>
-    <string name="pref_camera_whitebalance_label_fluorescent" msgid="3654887484979718684">"ප්‍රතිදීපන"</string>
-    <string name="pref_camera_whitebalance_label_cloudy" msgid="7288490282713935868">"වලාකුළු සහිත"</string>
-    <string name="pref_camera_scenemode_title" msgid="5200975368614697452">"සිදුවීම් ආකාරය"</string>
-    <string name="pref_camera_scenemode_entry_auto" msgid="7511260833909115424">"ස්වයං"</string>
-    <string name="pref_camera_scenemode_entry_hdr" msgid="1240176231782477736">"HDR"</string>
-    <string name="pref_camera_scenemode_entry_action" msgid="1837585145734214002">"ක්‍රියාව"</string>
-    <string name="pref_camera_scenemode_entry_night" msgid="7769610601562643051">"රාත්‍රී"</string>
-    <string name="pref_camera_scenemode_entry_sunset" msgid="8181732673387418710">"ඉර බැසීම"</string>
-    <string name="pref_camera_scenemode_entry_party" msgid="2053177794948141241">"සාදය"</string>
-    <string name="pref_camera_scenemode_label_auto" msgid="3930776963493458919">"කිසිවක් නැත"</string>
-    <string name="pref_camera_scenemode_label_action" msgid="7770498283906927328">"ක්‍රියාව"</string>
-    <string name="pref_camera_scenemode_label_night" msgid="502442339727709162">"රාත්‍රිය"</string>
-    <string name="pref_camera_scenemode_label_sunset" msgid="7721050709109503669">"හිරු බැසීම"</string>
-    <string name="pref_camera_scenemode_label_party" msgid="8942534460201242073">"සාදය"</string>
-    <string name="pref_camera_countdown_label_off" msgid="1200317172301019900">"කාල ගණකය අක්‍රියයි"</string>
-    <string name="pref_camera_countdown_label_one" msgid="7105722039618597195">"තත්පර 1"</string>
-    <string name="pref_camera_countdown_label_three" msgid="113172366823379525">"තත්පර.3"</string>
-    <string name="pref_camera_countdown_label_ten" msgid="8259680166571641702">"තත්පර 10"</string>
-    <string name="pref_camera_countdown_label_fifteen" msgid="2251170484933984740">"තත්පර 15"</string>
-    <string name="not_selectable_in_scene_mode" msgid="4186538577214404106">"දර්ශන ආකාරය තුළ තෝරාගත හැකි නොවේ"</string>
-    <string name="pref_exposure_title" msgid="5211801488740367403">"නිරාවරණය"</string>
-    <string name="pref_exposure_label" msgid="5586132867242336300">"නිරාවරණය"</string>
-    <!-- no translation found for pref_camera_hdr_default (2725798708765488564) -->
-    <skip />
-    <string name="pref_camera_hdr_label" msgid="3566769675820087426">"HDR"</string>
-    <string name="pref_camera_id_label_back" msgid="6322318969185513097">"ඉදිරිපස කැමරාව"</string>
-    <string name="pref_camera_id_label_front" msgid="3244743091065982114">"පිටුපස කැමරාව"</string>
-    <string name="dialog_ok" msgid="8097436389338241320">"හරි"</string>
-    <string name="spaceIsLow_content" product="default" msgid="9172166257752848178">"ඔබගේ SD කාඩ් පතේ ඉඩ අවසන් වෙමින් පවතී. ගුණත්ව සැකසීම් වෙනස් කරන්න හෝ සමහර පින්තුරය හෝ වෙනත් ගොනු මකන්න."</string>
-    <string name="video_reach_size_limit" msgid="3243731908069056095">"ප්‍රමාණයේ සීමාව ලඟාවී ඇත."</string>
-    <string name="pano_too_fast_prompt" msgid="992490587329437459">"ඉතා වේගවත්"</string>
-    <string name="pano_dialog_prepare_preview" msgid="7116632064591648365">"පරිදර්ශනය පිළියෙල වේ"</string>
-    <string name="pano_dialog_panorama_failed" msgid="1856809633978860743">"පරිදර්ශනය සුරැකිය නොහැක."</string>
-    <string name="pano_dialog_title" msgid="7236715443943941505">"පරිදර්ශනය"</string>
-    <string name="pano_capture_indication" msgid="6826745806103872825">"පරිදර්ශනය ග්‍රහණය කෙරේ"</string>
-    <string name="pano_dialog_waiting_previous" msgid="1379192572905837403">"පෙර පරිදර්ශනය සඳහා රැඳී සිටී"</string>
-    <string name="pano_review_saving_indication_str" msgid="7006233508921435129">"සුරැකේ...."</string>
-    <string name="pano_review_rendering" msgid="7712584259126188763">"පරිදර්ශනය ප්‍රවාචනය"</string>
-    <string name="tap_to_focus" msgid="3031819623593720463">"නාභිගත කිරීමට ස්පර්ශ කරන්න"</string>
-    <string name="pref_video_effect_title" msgid="2371174223707366255">"විලාස"</string>
-    <string name="effect_none" msgid="1026487463817289779">"කිසිවක් නැත"</string>
-    <string name="effect_goofy_face_squeeze" msgid="1286464707958852799">"මිරිකන්න"</string>
-    <string name="effect_goofy_face_big_eyes" msgid="6904511475216683450">"ලොකු ඇස්"</string>
-    <string name="effect_goofy_face_big_mouth" msgid="4037032365093279045">"ලොකු කට"</string>
-    <string name="effect_goofy_face_small_mouth" msgid="5950057962899410295">"කුඩා කට"</string>
-    <string name="effect_goofy_face_big_nose" msgid="6225216990258277302">"ලොකු නහය"</string>
-    <string name="effect_goofy_face_small_eyes" msgid="547835991052738090">"කුඩා ඇස්"</string>
-    <string name="effect_backdropper_space" msgid="5794499374151237559">"අවකාශයෙහි"</string>
-    <string name="effect_backdropper_sunset" msgid="2431035827232871903">"ඉර බැසීම"</string>
-    <string name="effect_backdropper_gallery" msgid="3292606781700530872">"ඔබගේ වීඩියෝව"</string>
-    <string name="video_snapshot_hint" msgid="56511446769261564">"පටිගත කිරීම අතරතුර ඡායාරූපයක් ගැනීමට ස්පර්ශ කරන්න."</string>
-    <string name="video_recording_started" msgid="1478448043553326540">"වීඩියෝව පටිගත කිරීම ඇරඹී ඇත."</string>
-    <string name="video_recording_stopped" msgid="2676770458529207322">"වීඩියෝව පටිගත කිරීම නැවතී ඇත."</string>
-    <string name="clear_effects" msgid="155262355011195942">"විලාස හිස් කරන්න"</string>
-    <string name="effect_silly_faces" msgid="2764749499874707741">"මෝඩ මුහුණු"</string>
-    <string name="effect_background" msgid="2260438748276866983">"පසුබිම"</string>
-    <string name="accessibility_shutter_button" msgid="442677115885353279">"ශටරය"</string>
-    <string name="accessibility_menu_button" msgid="7265396535447770250">"මෙනු බොත්තම"</string>
-    <string name="accessibility_mode_picker" msgid="5708483984757534790">"කැමරාව, වීඩියෝව, හෝ පරිදර්ශනය තෝරන්න"</string>
-    <string name="accessibility_check_box" msgid="6190311654361323510">"සලකුණු කොටු %1$s"</string>
-    <string name="accessibility_switch_to_camera" msgid="8253443632354129201">"ඡායාරූපය වෙත මාරු වන්න"</string>
-    <string name="accessibility_switch_to_video" msgid="685379350229791000">"වීඩියෝව වෙත මාරු වන්න"</string>
-    <string name="accessibility_switch_to_panorama" msgid="4367290605860986266">"පරිදර්ශනය වෙත මාරු වන්න"</string>
-    <string name="accessibility_switch_to_photo_sphere" msgid="7282333436078515422">"ඡායාරූප ගෝල වෙත මාරු වෙන්න"</string>
-    <string name="accessibility_review_cancel" msgid="8233210011810145540">"අවලංගු කිරීම සමාලෝචනය කරන්න"</string>
-    <string name="accessibility_review_ok" msgid="1919818908740908312">"සමාලෝචනය අවසන්"</string>
-    <string name="accessibility_review_retake" msgid="3256541538259494381">"යළිගැනීම සමාලෝචනය කරන්න"</string>
-    <string name="capital_on" msgid="5840588038158274585">"සක්‍රීයයි"</string>
-    <string name="capital_off" msgid="3199056669644846925">"අක්‍රියයි"</string>
-    <string name="pref_video_time_lapse_frame_interval_off" msgid="8999446316706593179">"අක්‍රියයි"</string>
-    <string name="pref_video_time_lapse_frame_interval_500" msgid="8756750735297085410">"තත්පර 0.5"</string>
-    <string name="pref_video_time_lapse_frame_interval_1000" msgid="7640704589637632218">"තත්පර 1"</string>
-    <string name="pref_video_time_lapse_frame_interval_1500" msgid="8931945040035127831">"තත්පර 1.5"</string>
-    <string name="pref_video_time_lapse_frame_interval_2000" msgid="3939716251293255146">"තත්පර 2"</string>
-    <string name="pref_video_time_lapse_frame_interval_2500" msgid="7683749285828898630">"තත්පර 2.5"</string>
-    <string name="pref_video_time_lapse_frame_interval_3000" msgid="780624543534219753">"තත්පර 3"</string>
-    <string name="pref_video_time_lapse_frame_interval_4000" msgid="8889653143865462502">"තත්පර 4"</string>
-    <string name="pref_video_time_lapse_frame_interval_5000" msgid="4102268340899789227">"තත්පර 5"</string>
-    <string name="pref_video_time_lapse_frame_interval_6000" msgid="8603974284920017861">"තත්පර 6"</string>
-    <string name="pref_video_time_lapse_frame_interval_10000" msgid="6650102184647775722">"තත්පර 10"</string>
-    <string name="pref_video_time_lapse_frame_interval_12000" msgid="6753526423674050181">"තත්පර 12"</string>
-    <string name="pref_video_time_lapse_frame_interval_15000" msgid="531646722496644257">"තත්පර 15"</string>
-    <string name="pref_video_time_lapse_frame_interval_24000" msgid="290145063080413411">"තත්පර 24"</string>
-    <string name="pref_video_time_lapse_frame_interval_30000" msgid="9079297914740012179">"මිනිත්තු 0.5"</string>
-    <string name="pref_video_time_lapse_frame_interval_60000" msgid="3020106068480066496">"මිනිත්තු 1"</string>
-    <string name="pref_video_time_lapse_frame_interval_90000" msgid="2685855786622077615">"මිනිත්තු1.5"</string>
-    <string name="pref_video_time_lapse_frame_interval_120000" msgid="7314050129714846577">"මිනිත්තු 2"</string>
-    <string name="pref_video_time_lapse_frame_interval_150000" msgid="4554449247426773111">"මිනිත්තු 2.5"</string>
-    <string name="pref_video_time_lapse_frame_interval_180000" msgid="4567679385417134299">"මිනිත්තු 3"</string>
-    <string name="pref_video_time_lapse_frame_interval_240000" msgid="980170959249981779">"මිනිත්තු 4"</string>
-    <string name="pref_video_time_lapse_frame_interval_300000" msgid="4134060119540433901">"මිනිත්තු 5"</string>
-    <string name="pref_video_time_lapse_frame_interval_360000" msgid="2279953220469717307">"මිනිත්තු 6"</string>
-    <string name="pref_video_time_lapse_frame_interval_600000" msgid="262948882057819428">"මිනිත්තු 10"</string>
-    <string name="pref_video_time_lapse_frame_interval_720000" msgid="5025274021438060973">"මිනිත්තු 12"</string>
-    <string name="pref_video_time_lapse_frame_interval_900000" msgid="535122783273231729">"මිනිත්තු 15"</string>
-    <string name="pref_video_time_lapse_frame_interval_1440000" msgid="1389025940394108838">"මිනිත්තු 24"</string>
-    <string name="pref_video_time_lapse_frame_interval_1800000" msgid="3960495676390536948">"පැය 0.5"</string>
-    <string name="pref_video_time_lapse_frame_interval_3600000" msgid="4967310075272642117">"පැය 1"</string>
-    <string name="pref_video_time_lapse_frame_interval_5400000" msgid="4381496945219954612">"පැය 1.5"</string>
-    <string name="pref_video_time_lapse_frame_interval_7200000" msgid="6542316368455276228">"පැය 2"</string>
-    <string name="pref_video_time_lapse_frame_interval_9000000" msgid="7058722410153205915">"පැය 2.5"</string>
-    <string name="pref_video_time_lapse_frame_interval_10800000" msgid="6261070817876538949">"පැය 3"</string>
-    <string name="pref_video_time_lapse_frame_interval_14400000" msgid="6980220047958957353">"පැය 4"</string>
-    <string name="pref_video_time_lapse_frame_interval_18000000" msgid="7199366553142266407">"පැය 5"</string>
-    <string name="pref_video_time_lapse_frame_interval_21600000" msgid="5736484130500539985">"පැය 6"</string>
-    <string name="pref_video_time_lapse_frame_interval_36000000" msgid="720554925530517471">"පැය 10"</string>
-    <string name="pref_video_time_lapse_frame_interval_43200000" msgid="322398198717672456">"පැය 12"</string>
-    <string name="pref_video_time_lapse_frame_interval_54000000" msgid="4545285575174744076">"පැය 15"</string>
-    <string name="pref_video_time_lapse_frame_interval_86400000" msgid="225288451792149886">"පැය 24"</string>
-    <string name="time_lapse_seconds" msgid="6338396613003859047">"තත්පර"</string>
-    <string name="time_lapse_minutes" msgid="1610738675813013569">"මිනිත්තු"</string>
-    <string name="time_lapse_hours" msgid="2466092767364327518">"පැය"</string>
-    <string name="time_lapse_interval_set" msgid="5430624261132317167">"අවසාන වූ"</string>
-    <string name="set_time_interval" msgid="844482952911185265">"කාල අන්තරය පිහිටුවන්න"</string>
-    <string name="set_time_interval_help" msgid="1403571747238933001">"කාලය ඉකුත්වීමේ විශේෂාංගය අක්‍රියයි. කාල අන්තරය පිහිටුවීමට එය සක්‍රිය කරන්න."</string>
-    <string name="set_duration" msgid="7425045408900251919">"තත්පර වලින් කාල පරාස සකසන්න"</string>
-    <string name="count_down_title_text" msgid="8269417928362735617">"ඡායාරූපයක් ගැනීමට ආපස්සට ගණන් කෙරේ"</string>
-    <string name="remember_location_title" msgid="2290717227833540397">"ඡායාරූප ස්ථාන මතකද?"</string>
-    <string name="remember_location_prompt" msgid="6856517328973384896">"ඔබගේ ඡායාරූප සහ වීඩියෝ ඒවා ගත් ස්ථානය සමගින් ටැග් කරන්න.\n\nවෙනත් යෙදුම් වලට ඔබගේ සුරැකි පින්තුර සමගින් මෙම තොරතුරු වෙත ප්‍රවේශ විය හැක."</string>
-    <string name="remember_location_no" msgid="5160772992721036553">"එපා ස්තූතියි"</string>
-    <string name="remember_location_yes" msgid="4663333638854720964">"ඔව්"</string>
-    <string name="camera_menu_more_label" msgid="3997839063378329544">"තව විකල්ප"</string>
-    <string name="camera_menu_settings_label" msgid="2038476709578884568">"සැකසීම්"</string>
-</resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 9e58a1b..e44a052 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -157,10 +157,10 @@
     <string name="pref_camera_scenemode_entry_auto" msgid="9205644316260850379">"自動"</string>
     <string name="pref_camera_scenemode_entry_hdr_plus" msgid="6759085555519758794">"HDR+ (高動態範圍)"</string>
     <string name="pref_camera_scenemode_entry_hdr" msgid="3098836808080630955">"高動態範圍"</string>
-    <string name="pref_camera_scenemode_entry_turn_hdr_plus_on" msgid="4762986338359862238">"開啟 HDR+ (高動態範圍)"</string>
-    <string name="pref_camera_scenemode_entry_turn_hdr_plus_off" msgid="8027383906480914303">"關閉 HDR+ (高動態範圍)"</string>
-    <string name="pref_camera_scenemode_entry_turn_hdr_on" msgid="8567522693524539332">"開啟 HDR (高動態範圍)"</string>
-    <string name="pref_camera_scenemode_entry_turn_hdr_off" msgid="1121637502250585531">"關閉 HDR (高動態範圍)"</string>
+    <string name="pref_camera_scenemode_entry_turn_hdr_plus_on" msgid="4762986338359862238">"開啟 HDR+"</string>
+    <string name="pref_camera_scenemode_entry_turn_hdr_plus_off" msgid="8027383906480914303">"關閉 HDR+"</string>
+    <string name="pref_camera_scenemode_entry_turn_hdr_on" msgid="8567522693524539332">"開啟 HDR"</string>
+    <string name="pref_camera_scenemode_entry_turn_hdr_off" msgid="1121637502250585531">"關閉 HDR"</string>
     <string name="pref_camera_scenemode_entry_action" msgid="5753183620959062015">"動作"</string>
     <string name="pref_camera_scenemode_entry_night" msgid="3468037364159759991">"夜景"</string>
     <string name="pref_camera_scenemode_entry_sunset" msgid="5884302914893488509">"日落"</string>
diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java
index 09d5dc6..45e8e07 100644
--- a/src/com/android/camera/PhotoModule.java
+++ b/src/com/android/camera/PhotoModule.java
@@ -66,6 +66,7 @@
 import com.android.camera.util.ApiHelper;
 import com.android.camera.util.CameraUtil;
 import com.android.camera.util.GcamHelper;
+import com.android.camera.util.SmartCameraHelper;
 import com.android.camera.util.UsageStatistics;
 import com.android.camera2.R;
 
@@ -386,6 +387,7 @@
     private void onPreviewStarted() {
         setCameraState(IDLE);
         startFaceDetection();
+        startBarcodeDetection();
         locationFirstRun();
     }
 
@@ -597,6 +599,10 @@
         });
     }
 
+    private void startBarcodeDetection() {
+        SmartCameraHelper.register(mCameraDevice, mParameters.getPreviewSize(), mActivity);
+    }
+
     @Override
     public void startFaceDetection() {
         if (mFaceDetectionStarted) return;
diff --git a/src_pd/com/android/camera/util/SmartCameraHelper.java b/src_pd/com/android/camera/util/SmartCameraHelper.java
new file mode 100644
index 0000000..2b48388
--- /dev/null
+++ b/src_pd/com/android/camera/util/SmartCameraHelper.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.camera.util;
+
+
+import android.app.Activity;
+import android.hardware.Camera;
+
+import com.android.camera.CameraManager.CameraPreviewDataCallback;
+import com.android.camera.CameraManager.CameraProxy;
+
+public class SmartCameraHelper {
+    public static void register(CameraProxy camera, Camera.Size previewSize, Activity activity) {}
+}
diff --git a/tests/src/com/android/camera/StressTests.java b/tests/src/com/android/camera/StressTests.java
index 2cc4eeb..1734ef0 100755
--- a/tests/src/com/android/camera/StressTests.java
+++ b/tests/src/com/android/camera/StressTests.java
@@ -40,7 +40,7 @@
         result.addTestSuite(CameraLatency.class);
         result.addTestSuite(CameraStartUp.class);
         result.addTestSuite(ImageCapture.class);
-        result.addTestSuite(SwitchPreview.class);
+//      result.addTestSuite(SwitchPreview.class);
         return result;
     }
 }
diff --git a/tests/src/com/android/camera/stress/CameraLatency.java b/tests/src/com/android/camera/stress/CameraLatency.java
index 22347dd..527b586 100755
--- a/tests/src/com/android/camera/stress/CameraLatency.java
+++ b/tests/src/com/android/camera/stress/CameraLatency.java
@@ -36,7 +36,7 @@
 public class CameraLatency extends ActivityInstrumentationTestCase2 <CameraActivity> {
     private String TAG = "CameraLatency";
     private static final int TOTAL_NUMBER_OF_IMAGECAPTURE = 20;
-    private static final long WAIT_FOR_IMAGE_CAPTURE_TO_BE_TAKEN = 6 * 1000; //6 seconds.
+    private static final long WAIT_FOR_IMAGE_CAPTURE_TO_BE_TAKEN = 4000;
     private static final String CAMERA_TEST_OUTPUT_FILE =
             Environment.getExternalStorageDirectory().toString() + "/mediaStressOut.txt";
 
@@ -57,7 +57,6 @@
 
     @Override
     protected void setUp() throws Exception {
-        Thread.sleep(2 * 1000); //sleep for 2 seconds.
         getActivity();
         super.setUp();
     }
@@ -70,6 +69,7 @@
     public void testImageCapture() {
         Log.v(TAG, "start testImageCapture test");
         Instrumentation inst = getInstrumentation();
+        inst.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_DOWN);
         try {
             for (int i = 0; i < TOTAL_NUMBER_OF_IMAGECAPTURE; i++) {
                 Thread.sleep(WAIT_FOR_IMAGE_CAPTURE_TO_BE_TAKEN);
diff --git a/tests/src/com/android/camera/stress/CameraStartUp.java b/tests/src/com/android/camera/stress/CameraStartUp.java
index c39f435..4a9b773 100644
--- a/tests/src/com/android/camera/stress/CameraStartUp.java
+++ b/tests/src/com/android/camera/stress/CameraStartUp.java
@@ -40,7 +40,7 @@
     private String TAG = "CameraStartUp";
     private static final String CAMERA_TEST_OUTPUT_FILE =
             Environment.getExternalStorageDirectory().toString() + "/mediaStressOut.txt";
-    private static int WAIT_TIME_FOR_PREVIEW = 4 * 1000; //4 seconds.
+    private static int WAIT_TIME_FOR_PREVIEW = 1500; //1.5 second
 
     private long launchCamera() {
         long startupTime = 0;
@@ -55,7 +55,7 @@
             Thread.sleep(WAIT_TIME_FOR_PREVIEW);
             cameraActivity.finish();
             startupTime = cameraStarted - beforeStart;
-            Thread.sleep(2 * 1000); //sleep for 2 seconds.
+            Thread.sleep(1000);
             Log.v(TAG, "camera startup time: " + startupTime);
         } catch (Exception e) {
             Log.v(TAG, "Got exception", e);
@@ -75,12 +75,11 @@
             Instrumentation inst = getInstrumentation();
             Activity recorderActivity = inst.startActivitySync(intent);
             long cameraStarted = System.currentTimeMillis();
-            Thread.sleep(WAIT_TIME_FOR_PREVIEW);
             recorderActivity.finish();
             startupTime = cameraStarted - beforeStart;
             Log.v(TAG, "Video Startup Time = " + startupTime);
             // wait for 1s to make sure it reach a clean stage
-            Thread.sleep(2 * 1000); //sleep for 2 seconds.
+            Thread.sleep(WAIT_TIME_FOR_PREVIEW);
             Log.v(TAG, "video startup time: " + startupTime);
         } catch (Exception e) {
             Log.v(TAG, "Got exception", e);
diff --git a/tests/src/com/android/camera/stress/ImageCapture.java b/tests/src/com/android/camera/stress/ImageCapture.java
index f5f4302..fd7e2af 100755
--- a/tests/src/com/android/camera/stress/ImageCapture.java
+++ b/tests/src/com/android/camera/stress/ImageCapture.java
@@ -40,8 +40,8 @@
 
 public class ImageCapture extends ActivityInstrumentationTestCase2 <CameraActivity> {
     private String TAG = "ImageCapture";
-    private static final long WAIT_FOR_IMAGE_CAPTURE_TO_BE_TAKEN = 4 * 1000;   //4 seconds
-    private static final long WAIT_FOR_SWITCH_CAMERA = 4 * 1000; //4 seconds
+    private static final long WAIT_FOR_IMAGE_CAPTURE_TO_BE_TAKEN = 1500;   //1.5 sedconds
+    private static final long WAIT_FOR_SWITCH_CAMERA = 3000; //3 seconds
 
     private TestUtil testUtil = new TestUtil();
 
@@ -101,9 +101,6 @@
         Thread.sleep(WAIT_FOR_SWITCH_CAMERA);
         captureImages("Back Camera Image Capture\n", inst);
         act.finish();
-        // Wait for a clean finish.
-        Thread.sleep(2 * 1000); //sleep for 2 seconds.
-
     }
 
     public void testFrontImageCapture() throws Exception {
@@ -118,7 +115,5 @@
         Thread.sleep(WAIT_FOR_SWITCH_CAMERA);
         captureImages("Front Camera Image Capture\n", inst);
         act.finish();
-        // Wait for a clean finish.
-        Thread.sleep(2 * 1000); //sleep for 2 seconds.
     }
 }
diff --git a/tests/src/com/android/camera/stress/VideoCapture.java b/tests/src/com/android/camera/stress/VideoCapture.java
index c740982..3688d89 100755
--- a/tests/src/com/android/camera/stress/VideoCapture.java
+++ b/tests/src/com/android/camera/stress/VideoCapture.java
@@ -41,8 +41,8 @@
  */
 
 public class VideoCapture extends ActivityInstrumentationTestCase2 <CameraActivity> {
-    private static final long WAIT_FOR_PREVIEW = 4 * 1000; //4 seconds
-    private static final long WAIT_FOR_SWITCH_CAMERA = 4 * 1000; //4 seconds
+    private static final long WAIT_FOR_PREVIEW = 1500; //1.5 seconds
+    private static final long WAIT_FOR_SWITCH_CAMERA = 3000; //2 seconds
 
     // Private intent extras which control the camera facing.
     private final static String EXTRAS_CAMERA_FACING =
@@ -94,9 +94,6 @@
         Thread.sleep(WAIT_FOR_SWITCH_CAMERA);
         captureVideos("Back Camera Video Capture\n", inst);
         act.finish();
-        // Wait for a clean finish.
-        Thread.sleep(2 * 1000); //sleep for 2 seconds
-
     }
 
     public void testFrontVideoCapture() throws Exception {
@@ -111,8 +108,5 @@
         Thread.sleep(WAIT_FOR_SWITCH_CAMERA);
         captureVideos("Front Camera Video Capture\n", inst);
         act.finish();
-        // Wait for a clean finish.
-        Thread.sleep(2 * 1000); //sleep for 2 seconds.
-
     }
 }
diff --git a/tests_camera/AndroidManifest.xml b/tests_camera/AndroidManifest.xml
new file mode 100644
index 0000000..164bbd5
--- /dev/null
+++ b/tests_camera/AndroidManifest.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2008 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.camera.tests">
+
+    <uses-permission android:name="android.permission.INJECT_EVENTS" />
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <instrumentation android:name="com.android.camera.CameraLaunchPerformance"
+            android:targetPackage="com.android.camera"
+            android:label="Camera Launch Performance">
+    </instrumentation>
+
+    <instrumentation android:name="com.android.camera.stress.CameraStressTestRunner"
+            android:targetPackage="com.android.camera"
+            android:label="Camera stress test runner">
+    </instrumentation>
+
+    <instrumentation android:name="com.android.camera.CameraTestRunner"
+            android:targetPackage="com.android.camera"
+            android:label="Camera continuous test runner">
+    </instrumentation>
+
+    <instrumentation android:name="android.test.InstrumentationTestRunner"
+             android:targetPackage="com.android.camera"
+             android:label="Tests for Camera application."/>
+</manifest>
diff --git a/tests_camera/src/com/android/camera/CameraLaunchPerformance.java b/tests_camera/src/com/android/camera/CameraLaunchPerformance.java
new file mode 100644
index 0000000..fe2b776
--- /dev/null
+++ b/tests_camera/src/com/android/camera/CameraLaunchPerformance.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2007 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.camera;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.test.LaunchPerformanceBase;
+
+/**
+ * Instrumentation class for Camera launch performance testing.
+ */
+public class CameraLaunchPerformance extends LaunchPerformanceBase {
+    @SuppressWarnings("unused")
+    private static final String TAG = "CameraLaunchPerformance";
+
+    @Override
+    public void onCreate(Bundle arguments) {
+        super.onCreate(arguments);
+        mIntent.setClassName(getTargetContext(),
+                "com.android.camera.CameraActivity");
+        start();
+    }
+
+    /**
+     * Calls LaunchApp and finish.
+     */
+    @Override
+    public void onStart() {
+        super.onStart();
+        LaunchApp();
+        finish(Activity.RESULT_OK, mResults);
+    }
+}
diff --git a/tests_camera/src/com/android/camera/CameraTestRunner.java b/tests_camera/src/com/android/camera/CameraTestRunner.java
new file mode 100755
index 0000000..96c48a4
--- /dev/null
+++ b/tests_camera/src/com/android/camera/CameraTestRunner.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.camera;
+
+import android.test.InstrumentationTestRunner;
+import android.test.InstrumentationTestSuite;
+
+import com.android.camera.activity.CameraActivityTest;
+import com.android.camera.functional.CameraTest;
+import com.android.camera.functional.ImageCaptureIntentTest;
+import com.android.camera.functional.VideoCaptureIntentTest;
+import com.android.camera.unittest.CameraUnitTest;
+
+import junit.framework.TestSuite;
+
+
+public class CameraTestRunner extends InstrumentationTestRunner {
+
+    @Override
+    public TestSuite getAllTests() {
+        TestSuite suite = new InstrumentationTestSuite(this);
+        suite.addTestSuite(CameraActivityTest.class);
+        suite.addTestSuite(CameraTest.class);
+        suite.addTestSuite(ImageCaptureIntentTest.class);
+        suite.addTestSuite(VideoCaptureIntentTest.class);
+        suite.addTestSuite(CameraUnitTest.class);
+        return suite;
+    }
+
+    @Override
+    public ClassLoader getLoader() {
+        return CameraTestRunner.class.getClassLoader();
+    }
+}
diff --git a/tests_camera/src/com/android/camera/StressTests.java b/tests_camera/src/com/android/camera/StressTests.java
new file mode 100755
index 0000000..7ed8317
--- /dev/null
+++ b/tests_camera/src/com/android/camera/StressTests.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.camera;
+
+import com.android.camera.stress.ImageCapture;
+import com.android.camera.stress.SwitchPreview;
+import com.android.camera.stress.CameraLatency;
+import com.android.camera.stress.CameraStartUp;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+
+/**
+ * Instrumentation Test Runner for all Camera tests.
+ *
+ * Running all tests:
+ *
+ * adb shell am instrument \
+ *    -e class com.android.camera.StressTests \
+ *    -w com.android.camera.tests/com.android.camera.stress.CameraStressTestRunner
+ */
+
+public class StressTests extends TestSuite {
+    public static Test suite() {
+        TestSuite result = new TestSuite();
+        result.addTestSuite(SwitchPreview.class);
+        result.addTestSuite(ImageCapture.class);
+        result.addTestSuite(CameraLatency.class);
+        result.addTestSuite(CameraStartUp.class);
+        return result;
+    }
+}
diff --git a/tests_camera/src/com/android/camera/UnitTests.java b/tests_camera/src/com/android/camera/UnitTests.java
new file mode 100644
index 0000000..e56a907
--- /dev/null
+++ b/tests_camera/src/com/android/camera/UnitTests.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.camera;
+
+import android.test.suitebuilder.UnitTestSuiteBuilder;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * TestSuite for all Camera unit tests.
+ */
+public class UnitTests extends TestSuite {
+
+    public static Test suite() {
+        return new UnitTestSuiteBuilder(UnitTests.class)
+                .includePackages("com.android.camera.unittest")
+                .named("Camera Unit Tests")
+                .build();
+    }
+}
diff --git a/tests_camera/src/com/android/camera/activity/CameraActivityTest.java b/tests_camera/src/com/android/camera/activity/CameraActivityTest.java
new file mode 100644
index 0000000..eb027e9
--- /dev/null
+++ b/tests_camera/src/com/android/camera/activity/CameraActivityTest.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.camera.activity;
+
+import android.hardware.Camera.Parameters;
+import android.test.suitebuilder.annotation.LargeTest;
+
+import com.android.camera.CameraActivity;
+import com.android.camera.CameraHolder;
+import com.android.gallery3d.R;
+
+import static com.google.testing.littlemock.LittleMock.doReturn;
+
+public class CameraActivityTest extends CameraTestCase <CameraActivity> {
+    public CameraActivityTest() {
+        super(CameraActivity.class);
+    }
+
+    @LargeTest
+    public void testFailToConnect() throws Exception {
+        super.internalTestFailToConnect();
+    }
+
+    @LargeTest
+    public void testTakePicture() throws Exception {
+        CameraHolder.injectMockCamera(mCameraInfo, mOneMockCamera);
+
+        getActivity();
+        getInstrumentation().waitForIdleSync();
+
+        // Press shutter button to take a picture.
+        performClick(R.id.shutter_button);
+        getInstrumentation().waitForIdleSync();
+
+        // Force the activity to finish.
+        getActivity().finish();
+        getInstrumentation().waitForIdleSync();
+    }
+}
diff --git a/tests_camera/src/com/android/camera/activity/CameraTestCase.java b/tests_camera/src/com/android/camera/activity/CameraTestCase.java
new file mode 100644
index 0000000..4aae6b4
--- /dev/null
+++ b/tests_camera/src/com/android/camera/activity/CameraTestCase.java
@@ -0,0 +1,246 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.camera.activity;
+
+import android.app.Activity;
+import android.app.Instrumentation;
+import android.hardware.Camera;
+import android.hardware.Camera.AutoFocusCallback;
+import android.hardware.Camera.CameraInfo;
+import android.hardware.Camera.Parameters;
+import android.hardware.Camera.PictureCallback;
+import android.hardware.Camera.ShutterCallback;
+import android.test.ActivityInstrumentationTestCase2;
+import android.view.KeyEvent;
+import android.view.MotionEvent;
+import android.view.View;
+
+import com.android.camera.CameraHolder;
+import com.android.camera.CameraManager.CameraProxy;
+import com.android.camera.util.CameraUtil;
+import com.android.gallery3d.R;
+
+import static com.google.testing.littlemock.LittleMock.mock;
+import static com.google.testing.littlemock.LittleMock.doAnswer;
+import static com.google.testing.littlemock.LittleMock.doReturn;
+import static com.google.testing.littlemock.LittleMock.anyObject;
+import com.google.testing.littlemock.AppDataDirGuesser;
+import com.google.testing.littlemock.ArgumentCaptor;
+import com.google.testing.littlemock.Captor;
+import com.google.testing.littlemock.LittleMock;
+import com.google.testing.littlemock.Mock;
+
+import java.io.File;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.io.IOException;
+import java.util.concurrent.Callable;
+
+
+public class CameraTestCase<T extends Activity> extends ActivityInstrumentationTestCase2<T> {
+    protected CameraInfo mCameraInfo[];
+    protected CameraProxy mMockCamera[];
+    protected CameraInfo mOneCameraInfo[];
+    protected CameraProxy mOneMockCamera[];
+    private static Parameters mParameters;
+    private byte[] mBlankJpeg;
+    @Mock private CameraProxy mMockBackCamera;
+    @Mock private CameraProxy mMockFrontCamera;
+    @Captor private ArgumentCaptor<ShutterCallback> mShutterCallback;
+    @Captor private ArgumentCaptor<PictureCallback> mRawPictureCallback;
+    @Captor private ArgumentCaptor<PictureCallback> mJpegPictureCallback;
+    @Captor private ArgumentCaptor<AutoFocusCallback> mAutoFocusCallback;
+    Callable<Object> mAutoFocusCallable = new AutoFocusCallable();
+    Callable<Object> mTakePictureCallable = new TakePictureCallable();
+
+    private class TakePictureCallable implements Callable<Object> {
+        @Override
+        public Object call() throws Exception {
+            Runnable runnable = new Runnable() {
+                @Override
+                public void run() {
+                    readBlankJpeg();
+                    Camera camera = mOneMockCamera[0].getCamera();
+                    mShutterCallback.getValue().onShutter();
+                    mRawPictureCallback.getValue().onPictureTaken(null, camera);
+                    mJpegPictureCallback.getValue().onPictureTaken(mBlankJpeg, camera);
+                }
+            };
+            // Probably need some delay. Make sure shutter callback is called
+            // after onShutterButtonFocus(false).
+            getActivity().findViewById(R.id.gl_root_view).postDelayed(runnable, 50);
+            return null;
+        }
+   }
+
+    private class AutoFocusCallable implements Callable<Object> {
+        @Override
+        public Object call() throws Exception {
+            Runnable runnable = new Runnable() {
+                @Override
+                public void run() {
+                    Camera camera = mOneMockCamera[0].getCamera();
+                    mAutoFocusCallback.getValue().onAutoFocus(true, camera);
+                }
+            };
+            // Need some delay. Otherwise, focus callback will be run before
+            // onShutterButtonClick
+            getActivity().findViewById(R.id.gl_root_view).postDelayed(runnable, 50);
+            return null;
+        }
+   }
+
+    public CameraTestCase(Class<T> activityClass) {
+        super(activityClass);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        AppDataDirGuesser.setInstance(new AppDataDirGuesser() {
+            @Override
+            public File guessSuitableDirectoryForGeneratedClasses() {
+                return getInstrumentation().getTargetContext().getCacheDir();
+            }
+        });
+        AppDataDirGuesser.getsInstance().guessSuitableDirectoryForGeneratedClasses();
+        LittleMock.initMocks(this);
+        mCameraInfo = new CameraInfo[2];
+        mCameraInfo[0] = new CameraInfo();
+        mCameraInfo[0].facing = CameraInfo.CAMERA_FACING_BACK;
+        mCameraInfo[1] = new CameraInfo();
+        mCameraInfo[1].facing = CameraInfo.CAMERA_FACING_FRONT;
+        mMockCamera = new CameraProxy[2];
+        mMockCamera[0] = mMockBackCamera;
+        mMockCamera[1] = mMockFrontCamera;
+        doReturn(getParameters()).when(mMockCamera[0]).getParameters();
+        doReturn(getParameters()).when(mMockCamera[1]).getParameters();
+
+        mOneCameraInfo = new CameraInfo[1];
+        mOneCameraInfo[0] = new CameraInfo();
+        mOneCameraInfo[0].facing = CameraInfo.CAMERA_FACING_BACK;
+        mOneMockCamera = new CameraProxy[1];
+        mOneMockCamera[0] = mMockBackCamera;
+        doReturn(getParameters()).when(mOneMockCamera[0]).getParameters();
+
+        // Mock takePicture call.
+        doAnswer(mTakePictureCallable).when(mMockBackCamera).takePicture(
+                mShutterCallback.capture(), mRawPictureCallback.capture(),
+                (PictureCallback) anyObject(), mJpegPictureCallback.capture());
+
+        // Mock autoFocus call.
+        doAnswer(mAutoFocusCallable).when(mMockBackCamera).autoFocus(
+                mAutoFocusCallback.capture());
+    }
+
+    private void readBlankJpeg() {
+        InputStream ins = getActivity().getResources().openRawResource(R.raw.blank);
+        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+        int size = 0;
+
+        // Read the entire resource into a local byte buffer.
+        byte[] buffer = new byte[1024];
+        try {
+            while((size = ins.read(buffer, 0, 1024)) >= 0){
+                outputStream.write(buffer, 0, size);
+            }
+        } catch (IOException e) {
+            // ignore
+        } finally {
+            CameraUtil.closeSilently(ins);
+        }
+        mBlankJpeg = outputStream.toByteArray();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+        CameraHolder.injectMockCamera(null,  null);
+    }
+
+    protected void internalTestFailToConnect() throws Exception {
+        CameraHolder.injectMockCamera(mCameraInfo, null);
+
+        getActivity();
+        Instrumentation inst = getInstrumentation();
+        inst.waitForIdleSync();
+        inst.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_CENTER); // close dialog
+    }
+
+    protected void performClick(final int id) {
+        Activity activity = getActivity();
+        getInstrumentation().waitForIdleSync();
+        assertNotNull(activity.findViewById(id));
+        Instrumentation inst = getInstrumentation();
+        inst.runOnMainSync(new Runnable() {
+            @Override
+            public void run() {
+                View v = getActivity().findViewById(id);
+                float x = (v.getLeft() + v.getRight()) / 2;
+                float y = (v.getTop() + v.getBottom()) / 2;
+                MotionEvent down = MotionEvent.obtain(0, 0,
+                        MotionEvent.ACTION_DOWN, x, y, 0, 0, 0, 0, 0, 0, 0);
+                MotionEvent up = MotionEvent.obtain(0, 0,
+                        MotionEvent.ACTION_UP, x, y, 0, 0, 0, 0, 0, 0, 0);
+                View parent = (View) v.getParent();
+                parent.dispatchTouchEvent(down);
+                parent.dispatchTouchEvent(up);
+            }
+        });
+        inst.waitForIdleSync();
+    }
+
+    protected void assertViewNotExist(int id) {
+        Activity activity = getActivity();
+        getInstrumentation().waitForIdleSync();
+        assertNull(activity.findViewById(id));
+    }
+
+    protected void assertViewNotVisible(int id) {
+        Activity activity = getActivity();
+        getInstrumentation().waitForIdleSync();
+        View view = activity.findViewById(id);
+        assertTrue(view.getVisibility() != View.VISIBLE);
+    }
+
+    protected static Parameters getParameters() {
+        synchronized (CameraTestCase.class) {
+            if (mParameters == null) {
+                mParameters = android.hardware.Camera.getEmptyParameters();
+                mParameters.unflatten("preview-format-values=yuv420sp,yuv420p,yuv422i-yuyv,yuv420p;" +
+                        "preview-format=yuv420sp;" +
+                        "preview-size-values=800x480;preview-size=800x480;" +
+                        "picture-size-values=320x240;picture-size=320x240;" +
+                        "jpeg-thumbnail-size-values=320x240,0x0;jpeg-thumbnail-width=320;jpeg-thumbnail-height=240;" +
+                        "jpeg-thumbnail-quality=60;jpeg-quality=95;" +
+                        "preview-frame-rate-values=30,15;preview-frame-rate=30;" +
+                        "focus-mode-values=continuous-video,auto,macro,infinity,continuous-picture;focus-mode=auto;" +
+                        "preview-fps-range-values=(15000,30000);preview-fps-range=15000,30000;" +
+                        "scene-mode-values=auto,action,night;scene-mode=auto;" +
+                        "flash-mode-values=off,on,auto,torch;flash-mode=off;" +
+                        "whitebalance-values=auto,daylight,fluorescent,incandescent;whitebalance=auto;" +
+                        "effect-values=none,mono,sepia;effect=none;" +
+                        "zoom-supported=true;zoom-ratios=100,200,400;max-zoom=2;" +
+                        "picture-format-values=jpeg;picture-format=jpeg;" +
+                        "min-exposure-compensation=-30;max-exposure-compensation=30;" +
+                        "exposure-compensation=0;exposure-compensation-step=0.1;" +
+                        "horizontal-view-angle=40;vertical-view-angle=40;");
+            }
+        }
+        return mParameters;
+    }
+}
diff --git a/tests_camera/src/com/android/camera/functional/CameraTest.java b/tests_camera/src/com/android/camera/functional/CameraTest.java
new file mode 100644
index 0000000..3fdebc0
--- /dev/null
+++ b/tests_camera/src/com/android/camera/functional/CameraTest.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.camera.functional;
+
+import com.android.camera.CameraActivity;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Environment;
+import android.os.Process;
+import android.provider.MediaStore;
+import android.test.InstrumentationTestCase;
+import android.test.suitebuilder.annotation.LargeTest;
+
+import java.io.File;
+import java.lang.ref.WeakReference;
+import java.util.ArrayList;
+
+public class CameraTest extends InstrumentationTestCase {
+    @LargeTest
+    public void testVideoCaptureIntentFdLeak() throws Exception {
+        Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
+        intent.setClass(getInstrumentation().getTargetContext(), CameraActivity.class);
+        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.parse("file://"
+                + Environment.getExternalStorageDirectory().toString()
+                + "test_fd_leak.3gp"));
+        getInstrumentation().startActivitySync(intent).finish();
+        // Test if the fd is closed.
+        for (File f: new File("/proc/" + Process.myPid() + "/fd").listFiles()) {
+            assertEquals(-1, f.getCanonicalPath().indexOf("test_fd_leak.3gp"));
+        }
+    }
+
+    @LargeTest
+    public void testActivityLeak() throws Exception {
+        checkActivityLeak(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);
+        checkActivityLeak(MediaStore.INTENT_ACTION_VIDEO_CAMERA);
+    }
+
+    private void checkActivityLeak(String action) throws Exception {
+        final int TEST_COUNT = 5;
+        Intent intent = new Intent(action);
+        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        intent.setClass(getInstrumentation().getTargetContext(),
+                CameraActivity.class);
+        ArrayList<WeakReference<Activity>> refs =
+                new ArrayList<WeakReference<Activity>>();
+        for (int i = 0; i < TEST_COUNT; i++) {
+            Activity activity = getInstrumentation().startActivitySync(intent);
+            refs.add(new WeakReference<Activity>(activity));
+            activity.finish();
+            getInstrumentation().waitForIdleSync();
+            activity = null;
+        }
+        Runtime.getRuntime().gc();
+        Runtime.getRuntime().runFinalization();
+        Runtime.getRuntime().gc();
+        int refCount = 0;
+        for (WeakReference<Activity> c: refs) {
+            if (c.get() != null) refCount++;
+        }
+        // If applications are leaking activity, every reference is reachable.
+        assertTrue(refCount != TEST_COUNT);
+    }
+}
diff --git a/tests_camera/src/com/android/camera/functional/ImageCaptureIntentTest.java b/tests_camera/src/com/android/camera/functional/ImageCaptureIntentTest.java
new file mode 100644
index 0000000..54ac1b4
--- /dev/null
+++ b/tests_camera/src/com/android/camera/functional/ImageCaptureIntentTest.java
@@ -0,0 +1,148 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.camera.functional;
+
+import com.android.camera.CameraActivity;
+import com.android.gallery3d.R;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.net.Uri;
+import android.os.Environment;
+import android.provider.MediaStore;
+import android.test.ActivityInstrumentationTestCase2;
+import android.test.suitebuilder.annotation.LargeTest;
+import android.view.KeyEvent;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+
+public class ImageCaptureIntentTest extends ActivityInstrumentationTestCase2 <CameraActivity> {
+    private Intent mIntent;
+
+    public ImageCaptureIntentTest() {
+        super(CameraActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
+    }
+
+    @LargeTest
+    public void testNoExtraOutput() throws Exception {
+        setActivityIntent(mIntent);
+        getActivity();
+
+        takePicture();
+        pressDone();
+
+        assertTrue(getActivity().isFinishing());
+        assertEquals(Activity.RESULT_OK, getActivity().getResultCode());
+        Intent resultData = getActivity().getResultData();
+        Bitmap bitmap = (Bitmap) resultData.getParcelableExtra("data");
+        assertNotNull(bitmap);
+        assertTrue(bitmap.getWidth() > 0);
+        assertTrue(bitmap.getHeight() > 0);
+    }
+
+    @LargeTest
+    public void testExtraOutput() throws Exception {
+        File file = new File(Environment.getExternalStorageDirectory(),
+            "test.jpg");
+        BufferedInputStream stream = null;
+        byte[] jpegData;
+
+        try {
+            mIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
+            setActivityIntent(mIntent);
+            getActivity();
+
+            takePicture();
+            pressDone();
+
+            assertTrue(getActivity().isFinishing());
+            assertEquals(Activity.RESULT_OK, getActivity().getResultCode());
+
+            // Verify the jpeg file
+            int fileLength = (int) file.length();
+            assertTrue(fileLength > 0);
+            jpegData = new byte[fileLength];
+            stream = new BufferedInputStream(new FileInputStream(file));
+            stream.read(jpegData);
+        } finally {
+            if (stream != null) stream.close();
+            file.delete();
+        }
+
+        Bitmap b = BitmapFactory.decodeByteArray(jpegData, 0, jpegData.length);
+        assertTrue(b.getWidth() > 0);
+        assertTrue(b.getHeight() > 0);
+    }
+
+    @LargeTest
+    public void testCancel() throws Exception {
+        setActivityIntent(mIntent);
+        getActivity();
+
+        pressCancel();
+
+        assertTrue(getActivity().isFinishing());
+        assertEquals(Activity.RESULT_CANCELED, getActivity().getResultCode());
+    }
+
+    @LargeTest
+    public void testSnapshotCancel() throws Exception {
+        setActivityIntent(mIntent);
+        getActivity();
+
+        takePicture();
+        pressCancel();
+
+        assertTrue(getActivity().isFinishing());
+        assertEquals(Activity.RESULT_CANCELED, getActivity().getResultCode());
+    }
+
+    private void takePicture() throws Exception {
+        getInstrumentation().sendKeySync(
+                new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_FOCUS));
+        getInstrumentation().sendCharacterSync(KeyEvent.KEYCODE_CAMERA);
+        Thread.sleep(4000);
+    }
+
+    private void pressDone() {
+        getInstrumentation().runOnMainSync(new Runnable() {
+            @Override
+            public void run() {
+                getActivity().findViewById(R.id.btn_done).performClick();
+            }
+        });
+    }
+
+    private void pressCancel() {
+        getInstrumentation().runOnMainSync(new Runnable() {
+            @Override
+            public void run() {
+                getActivity().findViewById(R.id.btn_cancel).performClick();
+            }
+        });
+    }
+}
diff --git a/tests_camera/src/com/android/camera/functional/VideoCaptureIntentTest.java b/tests_camera/src/com/android/camera/functional/VideoCaptureIntentTest.java
new file mode 100644
index 0000000..43e91ca
--- /dev/null
+++ b/tests_camera/src/com/android/camera/functional/VideoCaptureIntentTest.java
@@ -0,0 +1,258 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.camera.functional;
+
+import com.android.camera.CameraActivity;
+import com.android.gallery3d.R;
+
+import android.app.Activity;
+import android.content.ContentResolver;
+import android.content.Intent;
+import android.database.Cursor;
+import android.media.MediaMetadataRetriever;
+import android.net.Uri;
+import android.os.Environment;
+import android.provider.MediaStore;
+import android.provider.MediaStore.Video.VideoColumns;
+import android.test.ActivityInstrumentationTestCase2;
+import android.test.suitebuilder.annotation.LargeTest;
+import android.util.Log;
+import android.view.KeyEvent;
+
+import java.io.File;
+
+public class VideoCaptureIntentTest extends ActivityInstrumentationTestCase2 <CameraActivity> {
+    private static final String TAG = "VideoCaptureIntentTest";
+    private Intent mIntent;
+    private Uri mVideoUri;
+    private File mFile, mFile2;
+
+    public VideoCaptureIntentTest() {
+        super(CameraActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        if (mVideoUri != null) {
+            ContentResolver resolver = getActivity().getContentResolver();
+            Uri query = mVideoUri.buildUpon().build();
+            String[] projection = new String[] {VideoColumns.DATA};
+
+            Cursor cursor = null;
+            try {
+                cursor = resolver.query(query, projection, null, null, null);
+                if (cursor != null && cursor.moveToFirst()) {
+                    new File(cursor.getString(0)).delete();
+                }
+            } finally {
+                if (cursor != null) cursor.close();
+            }
+
+            resolver.delete(mVideoUri, null, null);
+        }
+        if (mFile != null) mFile.delete();
+        if (mFile2 != null) mFile2.delete();
+        super.tearDown();
+    }
+
+    @LargeTest
+    public void testNoExtraOutput() throws Exception {
+        setActivityIntent(mIntent);
+        getActivity();
+
+        recordVideo();
+        pressDone();
+
+        Intent resultData = getActivity().getResultData();
+        mVideoUri = resultData.getData();
+        assertNotNull(mVideoUri);
+        verify(getActivity(), mVideoUri);
+    }
+
+    @LargeTest
+    public void testExtraOutput() throws Exception {
+        mFile = new File(Environment.getExternalStorageDirectory(), "video.tmp");
+
+        Uri uri = Uri.fromFile(mFile);
+        mIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
+        setActivityIntent(mIntent);
+        getActivity();
+
+        recordVideo();
+        pressDone();
+
+        verify(getActivity(), uri);
+    }
+
+    @LargeTest
+    public void testCancel() throws Exception {
+        setActivityIntent(mIntent);
+        getActivity();
+
+        pressCancel();
+
+        assertTrue(getActivity().isFinishing());
+        assertEquals(Activity.RESULT_CANCELED, getActivity().getResultCode());
+    }
+
+    @LargeTest
+    public void testRecordCancel() throws Exception {
+        setActivityIntent(mIntent);
+        getActivity();
+
+        recordVideo();
+        pressCancel();
+
+        assertTrue(getActivity().isFinishing());
+        assertEquals(Activity.RESULT_CANCELED, getActivity().getResultCode());
+    }
+
+    @LargeTest
+    public void testExtraSizeLimit() throws Exception {
+        mFile = new File(Environment.getExternalStorageDirectory(), "video.tmp");
+        final long sizeLimit = 500000;  // bytes
+
+        Uri uri = Uri.fromFile(mFile);
+        mIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
+        mIntent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, sizeLimit);
+        mIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0);  // use low quality to speed up
+        setActivityIntent(mIntent);
+        getActivity();
+
+        recordVideo(5000);
+        pressDone();
+
+        verify(getActivity(), uri);
+        long length = mFile.length();
+        Log.v(TAG, "Video size is " + length + " bytes.");
+        assertTrue(length > 0);
+        assertTrue("Actual size=" + length, length <= sizeLimit);
+    }
+
+    @LargeTest
+    public void testExtraDurationLimit() throws Exception {
+        mFile = new File(Environment.getExternalStorageDirectory(), "video.tmp");
+        final int durationLimit = 2;  // seconds
+
+        Uri uri = Uri.fromFile(mFile);
+        mIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
+        mIntent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, durationLimit);
+        setActivityIntent(mIntent);
+        getActivity();
+
+        recordVideo(5000);
+        pressDone();
+
+        int duration = verify(getActivity(), uri);
+        // The duraion should be close to to the limit. The last video duration
+        // also has duration, so the total duration may exceeds the limit a
+        // little bit.
+        Log.v(TAG, "Video length is " + duration + " ms.");
+        assertTrue(duration  < (durationLimit + 1) * 1000);
+    }
+
+    @LargeTest
+    public void testExtraVideoQuality() throws Exception {
+        mFile = new File(Environment.getExternalStorageDirectory(), "video.tmp");
+        mFile2 = new File(Environment.getExternalStorageDirectory(), "video2.tmp");
+
+        Uri uri = Uri.fromFile(mFile);
+        mIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
+        mIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0);  // low quality
+        setActivityIntent(mIntent);
+        getActivity();
+
+        recordVideo();
+        pressDone();
+
+        verify(getActivity(), uri);
+        setActivity(null);
+
+        uri = Uri.fromFile(mFile2);
+        mIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
+        mIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);  // high quality
+        setActivityIntent(mIntent);
+        getActivity();
+
+        recordVideo();
+        pressDone();
+
+        verify(getActivity(), uri);
+        assertTrue(mFile.length() <= mFile2.length());
+    }
+
+    // Verify result code, result data, and the duration.
+    private int verify(CameraActivity activity, Uri uri) throws Exception {
+        assertTrue(activity.isFinishing());
+        assertEquals(Activity.RESULT_OK, activity.getResultCode());
+
+        // Verify the video file
+        MediaMetadataRetriever retriever = new MediaMetadataRetriever();
+        retriever.setDataSource(activity, uri);
+        String duration = retriever.extractMetadata(
+                MediaMetadataRetriever.METADATA_KEY_DURATION);
+        assertNotNull(duration);
+        int durationValue = Integer.parseInt(duration);
+        Log.v(TAG, "Video duration is " + durationValue);
+        assertTrue(durationValue > 0);
+        return durationValue;
+    }
+
+    private void recordVideo(int ms) throws Exception {
+        getInstrumentation().sendCharacterSync(KeyEvent.KEYCODE_CAMERA);
+        Thread.sleep(ms);
+        getInstrumentation().runOnMainSync(new Runnable() {
+            @Override
+            public void run() {
+                // If recording is in progress, stop it. Run these atomically in
+                // UI thread.
+                CameraActivity activity = getActivity();
+                if (activity.isRecording()) {
+                    activity.findViewById(R.id.shutter_button).performClick();
+                }
+            }
+        });
+    }
+
+    private void recordVideo() throws Exception {
+        recordVideo(2000);
+    }
+
+    private void pressDone() {
+        getInstrumentation().runOnMainSync(new Runnable() {
+            @Override
+            public void run() {
+                getActivity().findViewById(R.id.btn_done).performClick();
+            }
+        });
+    }
+
+    private void pressCancel() {
+        getInstrumentation().runOnMainSync(new Runnable() {
+            @Override
+            public void run() {
+                getActivity().findViewById(R.id.btn_cancel).performClick();
+            }
+        });
+    }
+}
diff --git a/tests_camera/src/com/android/camera/power/ImageAndVideoCapture.java b/tests_camera/src/com/android/camera/power/ImageAndVideoCapture.java
new file mode 100755
index 0000000..b89b764
--- /dev/null
+++ b/tests_camera/src/com/android/camera/power/ImageAndVideoCapture.java
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.camera.power;
+
+import com.android.camera.CameraActivity;
+
+import android.app.Instrumentation;
+import android.provider.MediaStore;
+import android.test.ActivityInstrumentationTestCase2;
+import android.test.suitebuilder.annotation.LargeTest;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.content.Intent;
+/**
+ * Junit / Instrumentation test case for camera power measurement
+ *
+ * Running the test suite:
+ *
+ * adb shell am instrument \
+ *    -e com.android.camera.power.ImageAndVideoCapture \
+ *    -w com.android.camera.tests/android.test.InstrumentationTestRunner
+ *
+ */
+
+public class ImageAndVideoCapture extends ActivityInstrumentationTestCase2 <CameraActivity> {
+    private String TAG = "ImageAndVideoCapture";
+    private static final int TOTAL_NUMBER_OF_IMAGECAPTURE = 5;
+    private static final int TOTAL_NUMBER_OF_VIDEOCAPTURE = 5;
+    private static final long WAIT_FOR_IMAGE_CAPTURE_TO_BE_TAKEN = 1500;   //1.5 sedconds
+    private static final long WAIT_FOR_VIDEO_CAPTURE_TO_BE_TAKEN = 10000; //10 seconds
+    private static final long WAIT_FOR_PREVIEW = 1500; //1.5 seconds
+    private static final long WAIT_FOR_STABLE_STATE = 2000; //2 seconds
+
+    public ImageAndVideoCapture() {
+        super(CameraActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        getActivity();
+        super.setUp();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+    }
+
+    @LargeTest
+    public void testLaunchCamera() {
+        // This test case capture the baseline for the image preview.
+        try {
+            Thread.sleep(WAIT_FOR_STABLE_STATE);
+        } catch (Exception e) {
+            Log.v(TAG, "Got exception", e);
+            assertTrue("testImageCaptureDoNothing", false);
+        }
+    }
+
+    @LargeTest
+    public void testCapture5Image() {
+        // This test case will use the default camera setting
+        Instrumentation inst = getInstrumentation();
+        try {
+            for (int i = 0; i < TOTAL_NUMBER_OF_IMAGECAPTURE; i++) {
+                Thread.sleep(WAIT_FOR_IMAGE_CAPTURE_TO_BE_TAKEN);
+                inst.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_UP);
+                inst.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_CENTER);
+                Thread.sleep(WAIT_FOR_IMAGE_CAPTURE_TO_BE_TAKEN);
+            }
+            Thread.sleep(WAIT_FOR_STABLE_STATE);
+        } catch (Exception e) {
+            Log.v(TAG, "Got exception", e);
+            assertTrue("testImageCapture", false);
+        }
+    }
+
+    @LargeTest
+    public void testCapture5Videos() {
+        // This test case will use the default camera setting
+        Instrumentation inst = getInstrumentation();
+        try {
+            // Switch to the video mode
+            Intent intent = new Intent(MediaStore.INTENT_ACTION_VIDEO_CAMERA);
+            intent.setClass(getInstrumentation().getTargetContext(),
+                    CameraActivity.class);
+            getActivity().startActivity(intent);
+            for (int i = 0; i < TOTAL_NUMBER_OF_VIDEOCAPTURE; i++) {
+                Thread.sleep(WAIT_FOR_PREVIEW);
+                // record a video
+                inst.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_CENTER);
+                Thread.sleep(WAIT_FOR_VIDEO_CAPTURE_TO_BE_TAKEN);
+                inst.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_CENTER);
+                Thread.sleep(WAIT_FOR_PREVIEW);
+            }
+            Thread.sleep(WAIT_FOR_STABLE_STATE);
+        } catch (Exception e) {
+            Log.v(TAG, "Got exception", e);
+            assertTrue("testVideoCapture", false);
+        }
+    }
+}
diff --git a/tests_camera/src/com/android/camera/stress/CameraLatency.java b/tests_camera/src/com/android/camera/stress/CameraLatency.java
new file mode 100755
index 0000000..35ff717
--- /dev/null
+++ b/tests_camera/src/com/android/camera/stress/CameraLatency.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.camera.stress;
+
+import com.android.camera.CameraActivity;
+
+import android.app.Instrumentation;
+import android.os.Environment;
+import android.test.ActivityInstrumentationTestCase2;
+import android.test.suitebuilder.annotation.LargeTest;
+import android.util.Log;
+import android.view.KeyEvent;
+
+import java.io.BufferedWriter;
+import java.io.FileWriter;
+
+/**
+ * Junit / Instrumentation test case for camera test
+ *
+ */
+
+public class CameraLatency extends ActivityInstrumentationTestCase2 <CameraActivity> {
+    private String TAG = "CameraLatency";
+    private static final int TOTAL_NUMBER_OF_IMAGECAPTURE = 20;
+    private static final long WAIT_FOR_IMAGE_CAPTURE_TO_BE_TAKEN = 4000;
+    private static final String CAMERA_TEST_OUTPUT_FILE =
+            Environment.getExternalStorageDirectory().toString() + "/mediaStressOut.txt";
+
+    private long mTotalAutoFocusTime;
+    private long mTotalShutterLag;
+    private long mTotalShutterToPictureDisplayedTime;
+    private long mTotalPictureDisplayedToJpegCallbackTime;
+    private long mTotalJpegCallbackFinishTime;
+    private long mAvgAutoFocusTime;
+    private long mAvgShutterLag = mTotalShutterLag;
+    private long mAvgShutterToPictureDisplayedTime;
+    private long mAvgPictureDisplayedToJpegCallbackTime;
+    private long mAvgJpegCallbackFinishTime;
+
+    public CameraLatency() {
+        super(CameraActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        getActivity();
+        super.setUp();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+    }
+
+    @LargeTest
+    public void testImageCapture() {
+        Log.v(TAG, "start testImageCapture test");
+        Instrumentation inst = getInstrumentation();
+        inst.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_DOWN);
+        try {
+            for (int i = 0; i < TOTAL_NUMBER_OF_IMAGECAPTURE; i++) {
+                Thread.sleep(WAIT_FOR_IMAGE_CAPTURE_TO_BE_TAKEN);
+                inst.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_CENTER);
+                Thread.sleep(WAIT_FOR_IMAGE_CAPTURE_TO_BE_TAKEN);
+                //skip the first measurement
+                if (i != 0) {
+                    CameraActivity c = getActivity();
+
+                    // if any of the latency var accessor methods return -1 then the
+                    // camera is set to a different module other than PhotoModule so
+                    // skip the shot and try again
+                    if (c.getAutoFocusTime() != -1) {
+                        mTotalAutoFocusTime += c.getAutoFocusTime();
+                        mTotalShutterLag += c.getShutterLag();
+                        mTotalShutterToPictureDisplayedTime +=
+                                c.getShutterToPictureDisplayedTime();
+                        mTotalPictureDisplayedToJpegCallbackTime +=
+                                c.getPictureDisplayedToJpegCallbackTime();
+                        mTotalJpegCallbackFinishTime += c.getJpegCallbackFinishTime();
+                    }
+                    else {
+                        i--;
+                        continue;
+                    }
+                }
+            }
+        } catch (Exception e) {
+            Log.v(TAG, "Got exception", e);
+        }
+        //ToDO: yslau
+        //1) Need to get the baseline from the cupcake so that we can add the
+        //failure condition of the camera latency.
+        //2) Only count those number with succesful capture. Set the timer to invalid
+        //before capture and ignore them if the value is invalid
+        int numberofRun = TOTAL_NUMBER_OF_IMAGECAPTURE - 1;
+        mAvgAutoFocusTime = mTotalAutoFocusTime / numberofRun;
+        mAvgShutterLag = mTotalShutterLag / numberofRun;
+        mAvgShutterToPictureDisplayedTime =
+                mTotalShutterToPictureDisplayedTime / numberofRun;
+        mAvgPictureDisplayedToJpegCallbackTime =
+                mTotalPictureDisplayedToJpegCallbackTime / numberofRun;
+        mAvgJpegCallbackFinishTime =
+                mTotalJpegCallbackFinishTime / numberofRun;
+
+        try {
+            FileWriter fstream = null;
+            fstream = new FileWriter(CAMERA_TEST_OUTPUT_FILE, true);
+            BufferedWriter out = new BufferedWriter(fstream);
+            out.write("Camera Latency : \n");
+            out.write("Number of loop: " + TOTAL_NUMBER_OF_IMAGECAPTURE + "\n");
+            out.write("Avg AutoFocus = " + mAvgAutoFocusTime + "\n");
+            out.write("Avg mShutterLag = " + mAvgShutterLag + "\n");
+            out.write("Avg mShutterToPictureDisplayedTime = "
+                    + mAvgShutterToPictureDisplayedTime + "\n");
+            out.write("Avg mPictureDisplayedToJpegCallbackTime = "
+                    + mAvgPictureDisplayedToJpegCallbackTime + "\n");
+            out.write("Avg mJpegCallbackFinishTime = " +
+                    mAvgJpegCallbackFinishTime + "\n");
+            out.close();
+            fstream.close();
+        } catch (Exception e) {
+            fail("Camera Latency write output to file");
+        }
+        Log.v(TAG, "The Image capture wait time = " +
+            WAIT_FOR_IMAGE_CAPTURE_TO_BE_TAKEN);
+        Log.v(TAG, "Avg AutoFocus = " + mAvgAutoFocusTime);
+        Log.v(TAG, "Avg mShutterLag = " + mAvgShutterLag);
+        Log.v(TAG, "Avg mShutterToPictureDisplayedTime = "
+                + mAvgShutterToPictureDisplayedTime);
+        Log.v(TAG, "Avg mPictureDisplayedToJpegCallbackTime = "
+                + mAvgPictureDisplayedToJpegCallbackTime);
+        Log.v(TAG, "Avg mJpegCallbackFinishTime = " + mAvgJpegCallbackFinishTime);
+    }
+}
+
diff --git a/tests_camera/src/com/android/camera/stress/CameraStartUp.java b/tests_camera/src/com/android/camera/stress/CameraStartUp.java
new file mode 100644
index 0000000..94e9a94
--- /dev/null
+++ b/tests_camera/src/com/android/camera/stress/CameraStartUp.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.camera.stress;
+
+import com.android.camera.CameraActivity;
+
+import android.app.Activity;
+import android.app.Instrumentation;
+import android.content.Intent;
+import android.os.Environment;
+import android.provider.MediaStore;
+import android.test.InstrumentationTestCase;
+import android.test.suitebuilder.annotation.LargeTest;
+import android.util.Log;
+
+import java.io.FileWriter;
+import java.io.BufferedWriter;
+
+/**
+ * Test cases to measure the camera and video recorder startup time.
+ */
+public class CameraStartUp extends InstrumentationTestCase {
+
+    private static final int TOTAL_NUMBER_OF_STARTUP = 20;
+
+    private String TAG = "CameraStartUp";
+    private static final String CAMERA_TEST_OUTPUT_FILE =
+            Environment.getExternalStorageDirectory().toString() + "/mediaStressOut.txt";
+    private static int WAIT_TIME_FOR_PREVIEW = 1500; //1.5 second
+
+    private long launchCamera() {
+        long startupTime = 0;
+        try {
+            Intent intent = new Intent(Intent.ACTION_MAIN);
+            intent.setClass(getInstrumentation().getTargetContext(), CameraActivity.class);
+            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+            long beforeStart = System.currentTimeMillis();
+            Instrumentation inst = getInstrumentation();
+            Activity cameraActivity = inst.startActivitySync(intent);
+            long cameraStarted = System.currentTimeMillis();
+            Thread.sleep(WAIT_TIME_FOR_PREVIEW);
+            cameraActivity.finish();
+            startupTime = cameraStarted - beforeStart;
+            Thread.sleep(1000);
+            Log.v(TAG, "camera startup time: " + startupTime);
+        } catch (Exception e) {
+            Log.v(TAG, "Got exception", e);
+            fail("Fails to get the output file");
+        }
+        return startupTime;
+    }
+
+    private long launchVideo() {
+        long startupTime = 0;
+
+        try {
+            Intent intent = new Intent(MediaStore.INTENT_ACTION_VIDEO_CAMERA);
+            intent.setClass(getInstrumentation().getTargetContext(), CameraActivity.class);
+            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+            long beforeStart = System.currentTimeMillis();
+            Instrumentation inst = getInstrumentation();
+            Activity recorderActivity = inst.startActivitySync(intent);
+            long cameraStarted = System.currentTimeMillis();
+            recorderActivity.finish();
+            startupTime = cameraStarted - beforeStart;
+            Log.v(TAG, "Video Startup Time = " + startupTime);
+            // wait for 1s to make sure it reach a clean stage
+            Thread.sleep(WAIT_TIME_FOR_PREVIEW);
+            Log.v(TAG, "video startup time: " + startupTime);
+        } catch (Exception e) {
+            Log.v(TAG, "Got exception", e);
+            fail("Fails to launch video output file");
+        }
+        return startupTime;
+    }
+
+    private void writeToOutputFile(long totalStartupTime,
+            String individualStartupTime, boolean firstStartUp, String Type) throws Exception {
+        // TODO (yslau) : Need to integrate the output data with central
+        // dashboard
+        try {
+            FileWriter fstream = null;
+            fstream = new FileWriter(CAMERA_TEST_OUTPUT_FILE, true);
+            BufferedWriter out = new BufferedWriter(fstream);
+            if (firstStartUp) {
+                out.write("First " + Type + " Startup: " + totalStartupTime + "\n");
+            } else {
+                long averageStartupTime = totalStartupTime / (TOTAL_NUMBER_OF_STARTUP -1);
+                out.write(Type + "startup time: " + "\n");
+                out.write("Number of loop: " + (TOTAL_NUMBER_OF_STARTUP -1)  + "\n");
+                out.write(individualStartupTime + "\n\n");
+                out.write(Type + " average startup time: " + averageStartupTime + " ms\n\n");
+            }
+            out.close();
+            fstream.close();
+        } catch (Exception e) {
+            fail("Camera write output to file");
+        }
+    }
+
+    @LargeTest
+    public void testLaunchVideo() throws Exception {
+        String individualStartupTime;
+        individualStartupTime = "Individual Video Startup Time = ";
+        long totalStartupTime = 0;
+        long startupTime = 0;
+        for (int i = 0; i < TOTAL_NUMBER_OF_STARTUP; i++) {
+            if (i == 0) {
+                // Capture the first startup time individually
+                long firstStartUpTime = launchVideo();
+                writeToOutputFile(firstStartUpTime, "na", true, "Video");
+            } else {
+                startupTime = launchVideo();
+                totalStartupTime += startupTime;
+                individualStartupTime += startupTime + " ,";
+            }
+        }
+        Log.v(TAG, "totalStartupTime =" + totalStartupTime);
+        writeToOutputFile(totalStartupTime, individualStartupTime, false, "Video");
+    }
+
+    @LargeTest
+    public void testLaunchCamera() throws Exception {
+        String individualStartupTime;
+        individualStartupTime = "Individual Camera Startup Time = ";
+        long totalStartupTime = 0;
+        long startupTime = 0;
+        for (int i = 0; i < TOTAL_NUMBER_OF_STARTUP; i++) {
+            if (i == 0) {
+                // Capture the first startup time individually
+                long firstStartUpTime = launchCamera();
+                writeToOutputFile(firstStartUpTime, "na", true, "Camera");
+            } else {
+                startupTime = launchCamera();
+                totalStartupTime += startupTime;
+                individualStartupTime += startupTime + " ,";
+            }
+        }
+        Log.v(TAG, "totalStartupTime =" + totalStartupTime);
+        writeToOutputFile(totalStartupTime,
+                individualStartupTime, false, "Camera");
+    }
+}
diff --git a/tests_camera/src/com/android/camera/stress/CameraStressTestRunner.java b/tests_camera/src/com/android/camera/stress/CameraStressTestRunner.java
new file mode 100755
index 0000000..4047da0
--- /dev/null
+++ b/tests_camera/src/com/android/camera/stress/CameraStressTestRunner.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.camera.stress;
+
+import android.os.Bundle;
+import android.test.InstrumentationTestRunner;
+import android.test.InstrumentationTestSuite;
+import junit.framework.TestSuite;
+
+public class CameraStressTestRunner extends InstrumentationTestRunner {
+
+    // Default recorder settings
+    public static int mVideoDuration = 20000; // set default to 20 seconds
+    public static int mVideoIterations = 100; // set default to 100 videos
+    public static int mImageIterations = 100; // set default to 100 images
+
+    @Override
+    public TestSuite getAllTests() {
+        TestSuite suite = new InstrumentationTestSuite(this);
+        suite.addTestSuite(ImageCapture.class);
+        suite.addTestSuite(VideoCapture.class);
+        return suite;
+    }
+
+    @Override
+    public ClassLoader getLoader() {
+        return CameraStressTestRunner.class.getClassLoader();
+    }
+
+    @Override
+    public void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+        String video_iterations = (String) icicle.get("video_iterations");
+        String image_iterations = (String) icicle.get("image_iterations");
+        String video_duration = (String) icicle.get("video_duration");
+
+        if ( video_iterations != null ) {
+            mVideoIterations = Integer.parseInt(video_iterations);
+        }
+        if ( image_iterations != null) {
+            mImageIterations = Integer.parseInt(image_iterations);
+        }
+        if ( video_duration != null) {
+            mVideoDuration = Integer.parseInt(video_duration);
+        }
+    }
+}
diff --git a/tests_camera/src/com/android/camera/stress/ImageCapture.java b/tests_camera/src/com/android/camera/stress/ImageCapture.java
new file mode 100755
index 0000000..ad06db1
--- /dev/null
+++ b/tests_camera/src/com/android/camera/stress/ImageCapture.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.camera.stress;
+
+import com.android.camera.CameraActivity;
+import com.android.camera.stress.CameraStressTestRunner;
+
+import android.app.Instrumentation;
+import android.content.Intent;
+import android.test.ActivityInstrumentationTestCase2;
+import android.test.suitebuilder.annotation.LargeTest;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.app.Activity;
+
+/**
+ * Junit / Instrumentation test case for camera test
+ *
+ * Running the test suite:
+ *
+ * adb shell am instrument \
+ *    -e class com.android.camera.stress.ImageCapture \
+ *    -w com.google.android.camera.tests/android.test.InstrumentationTestRunner
+ *
+ */
+
+public class ImageCapture extends ActivityInstrumentationTestCase2 <CameraActivity> {
+    private String TAG = "ImageCapture";
+    private static final long WAIT_FOR_IMAGE_CAPTURE_TO_BE_TAKEN = 1500;   //1.5 sedconds
+    private static final long WAIT_FOR_SWITCH_CAMERA = 3000; //3 seconds
+
+    private TestUtil testUtil = new TestUtil();
+
+    // Private intent extras.
+    private final static String EXTRAS_CAMERA_FACING =
+        "android.intent.extras.CAMERA_FACING";
+
+    public ImageCapture() {
+        super(CameraActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        testUtil.prepareOutputFile();
+        super.setUp();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        testUtil.closeOutputFile();
+        super.tearDown();
+    }
+
+    public void captureImages(String reportTag, Instrumentation inst) {
+        int total_num_of_images = CameraStressTestRunner.mImageIterations;
+        Log.v(TAG, "no of images = " + total_num_of_images);
+
+        //TODO(yslau): Need to integrate the outoput with the central dashboard,
+        //write to a txt file as a temp solution
+        boolean memoryResult = false;
+        KeyEvent focusEvent = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_FOCUS);
+
+        try {
+            testUtil.writeReportHeader(reportTag, total_num_of_images);
+            for (int i = 0; i < total_num_of_images; i++) {
+                Thread.sleep(WAIT_FOR_IMAGE_CAPTURE_TO_BE_TAKEN);
+                inst.sendKeySync(focusEvent);
+                inst.sendCharacterSync(KeyEvent.KEYCODE_CAMERA);
+                Thread.sleep(WAIT_FOR_IMAGE_CAPTURE_TO_BE_TAKEN);
+                testUtil.writeResult(i);
+            }
+        } catch (Exception e) {
+            Log.v(TAG, "Got exception: " + e.toString());
+            assertTrue("testImageCapture", false);
+        }
+    }
+
+    @LargeTest
+    public void testBackImageCapture() throws Exception {
+        Instrumentation inst = getInstrumentation();
+        Intent intent = new Intent();
+
+        intent.setClass(getInstrumentation().getTargetContext(), CameraActivity.class);
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        intent.putExtra(EXTRAS_CAMERA_FACING,
+                android.hardware.Camera.CameraInfo.CAMERA_FACING_BACK);
+        Activity act = inst.startActivitySync(intent);
+        Thread.sleep(WAIT_FOR_SWITCH_CAMERA);
+        captureImages("Back Camera Image Capture\n", inst);
+        act.finish();
+    }
+
+    @LargeTest
+    public void testFrontImageCapture() throws Exception {
+        Instrumentation inst = getInstrumentation();
+        Intent intent = new Intent();
+
+        intent.setClass(getInstrumentation().getTargetContext(), CameraActivity.class);
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        intent.putExtra(EXTRAS_CAMERA_FACING,
+                android.hardware.Camera.CameraInfo.CAMERA_FACING_FRONT);
+        Activity act = inst.startActivitySync(intent);
+        Thread.sleep(WAIT_FOR_SWITCH_CAMERA);
+        captureImages("Front Camera Image Capture\n", inst);
+        act.finish();
+    }
+}
diff --git a/tests_camera/src/com/android/camera/stress/ShotToShotLatency.java b/tests_camera/src/com/android/camera/stress/ShotToShotLatency.java
new file mode 100644
index 0000000..0c1ef45
--- /dev/null
+++ b/tests_camera/src/com/android/camera/stress/ShotToShotLatency.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.camera.stress;
+
+import android.app.Instrumentation;
+import android.os.Environment;
+import android.test.ActivityInstrumentationTestCase2;
+import android.test.suitebuilder.annotation.LargeTest;
+import android.util.Log;
+import android.view.KeyEvent;
+import com.android.camera.CameraActivity;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FilenameFilter;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+
+/**
+ * Junit / Instrumentation test case for measuring camera shot to shot latency
+ */
+public class ShotToShotLatency extends ActivityInstrumentationTestCase2<CameraActivity> {
+    private String TAG = "ShotToShotLatency";
+    private static final int TOTAL_NUMBER_OF_SNAPSHOTS = 250;
+    private static final long SNAPSHOT_WAIT = 1000;
+    private static final String CAMERA_TEST_OUTPUT_FILE =
+            Environment.getExternalStorageDirectory().toString() + "/mediaStressOut.txt";
+    private static final String CAMERA_IMAGE_DIRECTORY =
+            Environment.getExternalStorageDirectory().toString() + "/DCIM/Camera/";
+
+    public ShotToShotLatency() {
+        super(CameraActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        getActivity();
+        super.setUp();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+    }
+
+    private void cleanupLatencyImages() {
+        try {
+            File sdcard = new File(CAMERA_IMAGE_DIRECTORY);
+            File[] pics = null;
+            FilenameFilter filter = new FilenameFilter() {
+                public boolean accept(File dir, String name) {
+                    return name.endsWith(".jpg");
+                }
+            };
+            pics = sdcard.listFiles(filter);
+            for (File f : pics) {
+                f.delete();
+            }
+        } catch (SecurityException e) {
+            Log.e(TAG, "Security manager access violation: " + e.toString());
+        }
+    }
+
+    private void sleep(long time) {
+        try {
+            Thread.sleep(time);
+        } catch (InterruptedException e) {
+            Log.e(TAG, "Sleep InterruptedException " + e.toString());
+        }
+    }
+
+    @LargeTest
+    public void testShotToShotLatency() {
+        long sigmaOfDiffFromMeanSquared = 0;
+        double mean = 0;
+        double standardDeviation = 0;
+        ArrayList<Long> captureTimes = new ArrayList<Long>();
+        ArrayList<Long> latencyTimes = new ArrayList<Long>();
+
+        Log.v(TAG, "start testShotToShotLatency test");
+        Instrumentation inst = getInstrumentation();
+
+        // Generate data points
+        for (int i = 0; i < TOTAL_NUMBER_OF_SNAPSHOTS; i++) {
+            inst.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_CENTER);
+            sleep(SNAPSHOT_WAIT);
+            CameraActivity c = getActivity();
+            if (c.getCaptureStartTime() > 0) {
+                captureTimes.add(c.getCaptureStartTime());
+            }
+        }
+
+        // Calculate latencies
+        for (int j = 1; j < captureTimes.size(); j++) {
+            latencyTimes.add(captureTimes.get(j) - captureTimes.get(j - 1));
+        }
+
+        // Crunch numbers
+        for (long dataPoint : latencyTimes) {
+            mean += (double) dataPoint;
+        }
+        mean /= latencyTimes.size();
+
+        for (long dataPoint : latencyTimes) {
+            sigmaOfDiffFromMeanSquared += (dataPoint - mean) * (dataPoint - mean);
+        }
+        standardDeviation = Math.sqrt(sigmaOfDiffFromMeanSquared / latencyTimes.size());
+
+        // Report statistics
+        File outFile = new File(CAMERA_TEST_OUTPUT_FILE);
+        BufferedWriter output = null;
+        try {
+            output = new BufferedWriter(new FileWriter(outFile, true));
+            output.write("Shot to shot latency - mean: " + mean + "\n");
+            output.write("Shot to shot latency - standard deviation: " + standardDeviation + "\n");
+            cleanupLatencyImages();
+        } catch (IOException e) {
+            Log.e(TAG, "testShotToShotLatency IOException writing to log " + e.toString());
+        } finally {
+            try {
+                if (output != null) {
+                    output.close();
+                }
+            } catch (IOException e) {
+                Log.e(TAG, "Error closing file: " + e.toString());
+            }
+        }
+    }
+}
diff --git a/tests_camera/src/com/android/camera/stress/SwitchPreview.java b/tests_camera/src/com/android/camera/stress/SwitchPreview.java
new file mode 100755
index 0000000..86b1b5d
--- /dev/null
+++ b/tests_camera/src/com/android/camera/stress/SwitchPreview.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.camera.stress;
+
+import com.android.camera.CameraActivity;
+
+import android.app.Instrumentation;
+import android.content.Intent;
+import android.provider.MediaStore;
+import android.test.ActivityInstrumentationTestCase2;
+import android.test.suitebuilder.annotation.LargeTest;
+import android.os.Environment;
+import android.util.Log;
+
+import java.io.BufferedWriter;
+import java.io.FileWriter;
+
+/**
+ * Junit / Instrumentation test case for camera test
+ *
+ * Running the test suite:
+ *
+ * adb shell am instrument \
+ *    -e class com.android.camera.stress.SwitchPreview \
+ *    -w com.android.camera.tests/com.android.camera.stress.CameraStressTestRunner
+ *
+ */
+public class SwitchPreview extends ActivityInstrumentationTestCase2 <CameraActivity>{
+    private String TAG = "SwitchPreview";
+    private static final int TOTAL_NUMBER_OF_SWITCHING = 200;
+    private static final long WAIT_FOR_PREVIEW = 4000;
+
+    private static final String CAMERA_TEST_OUTPUT_FILE =
+            Environment.getExternalStorageDirectory().toString() + "/mediaStressOut.txt";
+    private BufferedWriter mOut;
+    private FileWriter mfstream;
+
+    public SwitchPreview() {
+        super(CameraActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        getActivity();
+        prepareOutputFile();
+        super.setUp();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        getActivity().finish();
+        closeOutputFile();
+        super.tearDown();
+    }
+
+    private void prepareOutputFile(){
+        try{
+            mfstream = new FileWriter(CAMERA_TEST_OUTPUT_FILE, true);
+            mOut = new BufferedWriter(mfstream);
+        } catch (Exception e){
+            assertTrue("Camera Switch Mode", false);
+        }
+    }
+
+    private void closeOutputFile() {
+        try {
+            mOut.write("\n");
+            mOut.close();
+            mfstream.close();
+        } catch (Exception e) {
+            assertTrue("CameraSwitchMode close output", false);
+        }
+    }
+
+    @LargeTest
+    public void testSwitchMode() {
+        //Switching the video and the video recorder mode
+        Instrumentation inst = getInstrumentation();
+        try{
+            mOut.write("Camera Switch Mode:\n");
+            mOut.write("No of loops :" + TOTAL_NUMBER_OF_SWITCHING + "\n");
+            mOut.write("loop: ");
+            for (int i=0; i< TOTAL_NUMBER_OF_SWITCHING; i++) {
+                Thread.sleep(WAIT_FOR_PREVIEW);
+                Intent intent = new Intent(MediaStore.INTENT_ACTION_VIDEO_CAMERA);
+                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+                intent.setClass(getInstrumentation().getTargetContext(),
+                        CameraActivity.class);
+                getActivity().startActivity(intent);
+                Thread.sleep(WAIT_FOR_PREVIEW);
+                intent = new Intent();
+                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+                intent.setClass(getInstrumentation().getTargetContext(),
+                        CameraActivity.class);
+                getActivity().startActivity(intent);
+                mOut.write(" ," + i);
+                mOut.flush();
+            }
+        } catch (Exception e){
+            Log.v(TAG, "Got exception", e);
+        }
+    }
+}
diff --git a/tests_camera/src/com/android/camera/stress/TestUtil.java b/tests_camera/src/com/android/camera/stress/TestUtil.java
new file mode 100644
index 0000000..64e2039
--- /dev/null
+++ b/tests_camera/src/com/android/camera/stress/TestUtil.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.camera.stress;
+
+import android.os.Environment;
+import java.io.FileWriter;
+import java.io.BufferedWriter;
+
+
+/**
+ * Collection of utility functions used for the test.
+ */
+public class TestUtil {
+    public BufferedWriter mOut;
+    public FileWriter mfstream;
+
+    public TestUtil() {
+    }
+
+    public void prepareOutputFile() throws Exception {
+        String camera_test_output_file =
+                Environment.getExternalStorageDirectory().toString() + "/mediaStressOut.txt";
+        mfstream = new FileWriter(camera_test_output_file, true);
+        mOut = new BufferedWriter(mfstream);
+    }
+
+    public void closeOutputFile() throws Exception {
+        mOut.write("\n");
+        mOut.close();
+        mfstream.close();
+    }
+
+    public void writeReportHeader(String reportTag, int iteration) throws Exception {
+        mOut.write(reportTag);
+        mOut.write("No of loops :" + iteration + "\n");
+        mOut.write("loop: ");
+    }
+
+    public void writeResult(int iteration) throws Exception {
+        mOut.write(" ," + iteration);
+        mOut.flush();
+    }
+}
diff --git a/tests_camera/src/com/android/camera/stress/VideoCapture.java b/tests_camera/src/com/android/camera/stress/VideoCapture.java
new file mode 100755
index 0000000..ec55ccc
--- /dev/null
+++ b/tests_camera/src/com/android/camera/stress/VideoCapture.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.camera.stress;
+
+import com.android.camera.CameraActivity;
+import com.android.camera.stress.TestUtil;
+
+import android.app.Activity;
+import android.app.Instrumentation;
+import android.content.Intent;
+import android.provider.MediaStore;
+import android.test.ActivityInstrumentationTestCase2;
+import android.test.suitebuilder.annotation.LargeTest;
+import android.view.KeyEvent;
+
+import com.android.camera.stress.CameraStressTestRunner;
+
+/**
+ * Junit / Instrumentation test case for camera test
+ *
+ * Running the test suite:
+ *
+ * adb shell am instrument \
+ *    -e class com.android.camera.stress.VideoCapture \
+ *    -w com.google.android.camera.tests/android.test.InstrumentationTestRunner
+ *
+ */
+
+public class VideoCapture extends ActivityInstrumentationTestCase2 <CameraActivity> {
+    private static final long WAIT_FOR_PREVIEW = 1500; //1.5 seconds
+    private static final long WAIT_FOR_SWITCH_CAMERA = 3000; //2 seconds
+
+    // Private intent extras which control the camera facing.
+    private final static String EXTRAS_CAMERA_FACING =
+        "android.intent.extras.CAMERA_FACING";
+
+    private TestUtil testUtil = new TestUtil();
+
+    public VideoCapture() {
+        super(CameraActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        testUtil.prepareOutputFile();
+        super.setUp();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        testUtil.closeOutputFile();
+        super.tearDown();
+    }
+
+    @LargeTest
+    public void captureVideos(String reportTag, Instrumentation inst) throws Exception{
+        boolean memoryResult = false;
+        int total_num_of_videos = CameraStressTestRunner.mVideoIterations;
+        int video_duration = CameraStressTestRunner.mVideoDuration;
+        testUtil.writeReportHeader(reportTag, total_num_of_videos);
+
+        for (int i = 0; i < total_num_of_videos; i++) {
+            Thread.sleep(WAIT_FOR_PREVIEW);
+            // record a video
+            inst.sendCharacterSync(KeyEvent.KEYCODE_CAMERA);
+            Thread.sleep(video_duration);
+            inst.sendCharacterSync(KeyEvent.KEYCODE_CAMERA);
+            testUtil.writeResult(i);
+        }
+    }
+
+    @LargeTest
+    public void testBackVideoCapture() throws Exception {
+        Instrumentation inst = getInstrumentation();
+        Intent intent = new Intent(MediaStore.INTENT_ACTION_VIDEO_CAMERA);
+
+        intent.setClass(getInstrumentation().getTargetContext(), CameraActivity.class);
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        intent.putExtra(EXTRAS_CAMERA_FACING,
+                android.hardware.Camera.CameraInfo.CAMERA_FACING_BACK);
+        Activity act = inst.startActivitySync(intent);
+        Thread.sleep(WAIT_FOR_SWITCH_CAMERA);
+        captureVideos("Back Camera Video Capture\n", inst);
+        act.finish();
+    }
+
+    @LargeTest
+    public void testFrontVideoCapture() throws Exception {
+        Instrumentation inst = getInstrumentation();
+        Intent intent = new Intent(MediaStore.INTENT_ACTION_VIDEO_CAMERA);
+
+        intent.setClass(getInstrumentation().getTargetContext(), CameraActivity.class);
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        intent.putExtra(EXTRAS_CAMERA_FACING,
+                android.hardware.Camera.CameraInfo.CAMERA_FACING_FRONT);
+        Activity act = inst.startActivitySync(intent);
+        Thread.sleep(WAIT_FOR_SWITCH_CAMERA);
+        captureVideos("Front Camera Video Capture\n", inst);
+        act.finish();
+    }
+}
diff --git a/tests_camera/src/com/android/camera/unittest/CameraUnitTest.java b/tests_camera/src/com/android/camera/unittest/CameraUnitTest.java
new file mode 100644
index 0000000..70faa5c
--- /dev/null
+++ b/tests_camera/src/com/android/camera/unittest/CameraUnitTest.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.camera.unittest;
+
+import com.android.camera.util.CameraUtil;
+
+import android.graphics.Matrix;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import junit.framework.TestCase;
+
+@SmallTest
+public class CameraUnitTest extends TestCase {
+    public void testRoundOrientation() {
+        int h = CameraUtil.ORIENTATION_HYSTERESIS;
+        assertEquals(0, CameraUtil.roundOrientation(0, 0));
+        assertEquals(0, CameraUtil.roundOrientation(359, 0));
+        assertEquals(0, CameraUtil.roundOrientation(0 + 44 + h, 0));
+        assertEquals(90, CameraUtil.roundOrientation(0 + 45 + h, 0));
+        assertEquals(0, CameraUtil.roundOrientation(360 - 44 - h, 0));
+        assertEquals(270, CameraUtil.roundOrientation(360 - 45 - h, 0));
+
+        assertEquals(90, CameraUtil.roundOrientation(90, 90));
+        assertEquals(90, CameraUtil.roundOrientation(90 + 44 + h, 90));
+        assertEquals(180, CameraUtil.roundOrientation(90 + 45 + h, 90));
+        assertEquals(90, CameraUtil.roundOrientation(90 - 44 - h, 90));
+        assertEquals(0, CameraUtil.roundOrientation(90 - 45 - h, 90));
+
+        assertEquals(180, CameraUtil.roundOrientation(180, 180));
+        assertEquals(180, CameraUtil.roundOrientation(180 + 44 + h, 180));
+        assertEquals(270, CameraUtil.roundOrientation(180 + 45 + h, 180));
+        assertEquals(180, CameraUtil.roundOrientation(180 - 44 - h, 180));
+        assertEquals(90, CameraUtil.roundOrientation(180 - 45 - h, 180));
+
+        assertEquals(270, CameraUtil.roundOrientation(270, 270));
+        assertEquals(270, CameraUtil.roundOrientation(270 + 44 + h, 270));
+        assertEquals(0, CameraUtil.roundOrientation(270 + 45 + h, 270));
+        assertEquals(270, CameraUtil.roundOrientation(270 - 44 - h, 270));
+        assertEquals(180, CameraUtil.roundOrientation(270 - 45 - h, 270));
+
+        assertEquals(90, CameraUtil.roundOrientation(90, 0));
+        assertEquals(180, CameraUtil.roundOrientation(180, 0));
+        assertEquals(270, CameraUtil.roundOrientation(270, 0));
+
+        assertEquals(0, CameraUtil.roundOrientation(0, 90));
+        assertEquals(180, CameraUtil.roundOrientation(180, 90));
+        assertEquals(270, CameraUtil.roundOrientation(270, 90));
+
+        assertEquals(0, CameraUtil.roundOrientation(0, 180));
+        assertEquals(90, CameraUtil.roundOrientation(90, 180));
+        assertEquals(270, CameraUtil.roundOrientation(270, 180));
+
+        assertEquals(0, CameraUtil.roundOrientation(0, 270));
+        assertEquals(90, CameraUtil.roundOrientation(90, 270));
+        assertEquals(180, CameraUtil.roundOrientation(180, 270));
+    }
+
+    public void testPrepareMatrix() {
+        Matrix matrix = new Matrix();
+        float[] points;
+        int[] expected;
+
+        CameraUtil.prepareMatrix(matrix, false, 0, 800, 480);
+        points = new float[] {-1000, -1000, 0, 0, 1000, 1000, 0, 1000, -750, 250};
+        expected = new int[] {0, 0, 400, 240, 800, 480, 400, 480, 100, 300};
+        matrix.mapPoints(points);
+        assertEquals(expected, points);
+
+        CameraUtil.prepareMatrix(matrix, false, 90, 800, 480);
+        points = new float[] {-1000, -1000,   0,   0, 1000, 1000, 0, 1000, -750, 250};
+        expected = new int[] {800, 0, 400, 240, 0, 480, 0, 240, 300, 60};
+        matrix.mapPoints(points);
+        assertEquals(expected, points);
+
+        CameraUtil.prepareMatrix(matrix, false, 180, 800, 480);
+        points = new float[] {-1000, -1000, 0, 0, 1000, 1000, 0, 1000, -750, 250};
+        expected = new int[] {800, 480, 400, 240, 0, 0, 400, 0, 700, 180};
+        matrix.mapPoints(points);
+        assertEquals(expected, points);
+
+        CameraUtil.prepareMatrix(matrix, true, 180, 800, 480);
+        points = new float[] {-1000, -1000, 0, 0, 1000, 1000, 0, 1000, -750, 250};
+        expected = new int[] {0, 480, 400, 240, 800, 0, 400, 0, 100, 180};
+        matrix.mapPoints(points);
+        assertEquals(expected, points);
+    }
+
+    private void assertEquals(int expected[], float[] actual) {
+        for (int i = 0; i < expected.length; i++) {
+            assertEquals("Array index " + i + " mismatch", expected[i], Math.round(actual[i]));
+        }
+    }
+}