mirror of
https://git.code.sf.net/p/opencamera/code.git
synced 2024-09-19 19:42:29 +02:00
New testTakePhotoVendorExtensions.
This commit is contained in:
parent
0760ed9c24
commit
5406c08c1f
@ -14,6 +14,7 @@ import android.annotation.TargetApi;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.graphics.Bitmap;
|
||||
import android.hardware.camera2.CameraExtensionCharacteristics;
|
||||
import android.media.CamcorderProfile;
|
||||
import android.os.Build;
|
||||
import android.os.Looper;
|
||||
@ -41,6 +42,7 @@ import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
interface PhotoTests {}
|
||||
@ -171,13 +173,15 @@ public class InstrumentedTest {
|
||||
}
|
||||
}
|
||||
|
||||
private void updateForSettings(MainActivity activity) {
|
||||
private void updateForSettings() {
|
||||
Log.d(TAG, "updateForSettings");
|
||||
assertEquals(Looper.getMainLooper().getThread(), Thread.currentThread()); // check on UI thread
|
||||
// updateForSettings has code that must run on UI thread
|
||||
activity.initLocation(); // initLocation now called via MainActivity.setWindowFlagsForCamera() rather than updateForSettings()
|
||||
activity.getApplicationInterface().getDrawPreview().updateSettings();
|
||||
activity.updateForSettings(true);
|
||||
mActivityRule.getScenario().onActivity(activity -> {
|
||||
assertEquals(Looper.getMainLooper().getThread(), Thread.currentThread()); // check on UI thread
|
||||
// updateForSettings has code that must run on UI thread
|
||||
activity.initLocation(); // initLocation now called via MainActivity.setWindowFlagsForCamera() rather than updateForSettings()
|
||||
activity.getApplicationInterface().getDrawPreview().updateSettings();
|
||||
activity.updateForSettings(true);
|
||||
});
|
||||
|
||||
waitUntilCameraOpened(); // may need to wait if camera is reopened, e.g., when changing scene mode - see testSceneMode()
|
||||
// but we also need to wait for the delay if instead we've stopped and restarted the preview, the latter now only happens after dim_effect_time_c
|
||||
@ -6294,8 +6298,8 @@ public class InstrumentedTest {
|
||||
SharedPreferences.Editor editor = settings.edit();
|
||||
editor.putString(PreferenceKeys.RemoveDeviceExifPreferenceKey, "preference_remove_device_exif_on");
|
||||
editor.apply();
|
||||
updateForSettings(activity);
|
||||
});
|
||||
updateForSettings();
|
||||
|
||||
subTestTakePhoto(false, false, true, true, false, false, false, false);
|
||||
|
||||
@ -6325,8 +6329,8 @@ public class InstrumentedTest {
|
||||
editor.putString(PreferenceKeys.RemoveDeviceExifPreferenceKey, "preference_remove_device_exif_on");
|
||||
editor.putBoolean(PreferenceKeys.AutoStabilisePreferenceKey, true);
|
||||
editor.apply();
|
||||
updateForSettings(activity);
|
||||
});
|
||||
updateForSettings();
|
||||
|
||||
subTestTakePhoto(false, false, true, true, false, false, false, false);
|
||||
|
||||
@ -6354,8 +6358,8 @@ public class InstrumentedTest {
|
||||
SharedPreferences.Editor editor = settings.edit();
|
||||
editor.putString(PreferenceKeys.RemoveDeviceExifPreferenceKey, "preference_remove_device_exif_keep_datetime");
|
||||
editor.apply();
|
||||
updateForSettings(activity);
|
||||
});
|
||||
updateForSettings();
|
||||
|
||||
subTestTakePhoto(false, false, true, true, false, false, false, false);
|
||||
|
||||
@ -6370,6 +6374,114 @@ public class InstrumentedTest {
|
||||
});
|
||||
}
|
||||
|
||||
@Category(PhotoTests.class)
|
||||
@Test
|
||||
public void testTakePhotoVendorExtensions() throws InterruptedException {
|
||||
Log.d(TAG, "testTakePhotoVendorExtensions");
|
||||
setToDefault();
|
||||
|
||||
List<String> supported_extension_modes = new ArrayList<>();
|
||||
mActivityRule.getScenario().onActivity(activity -> {
|
||||
if( activity.supportsCameraExtension(CameraExtensionCharacteristics.EXTENSION_AUTOMATIC) )
|
||||
supported_extension_modes.add("preference_photo_mode_x_auto");
|
||||
if( activity.supportsCameraExtension(CameraExtensionCharacteristics.EXTENSION_HDR) )
|
||||
supported_extension_modes.add("preference_photo_mode_x_hdr");
|
||||
if( activity.supportsCameraExtension(CameraExtensionCharacteristics.EXTENSION_NIGHT) )
|
||||
supported_extension_modes.add("preference_photo_mode_x_night");
|
||||
if( activity.supportsCameraExtension(CameraExtensionCharacteristics.EXTENSION_BOKEH) )
|
||||
supported_extension_modes.add("preference_photo_mode_x_bokeh");
|
||||
if( activity.supportsCameraExtension(CameraExtensionCharacteristics.EXTENSION_BEAUTY) )
|
||||
supported_extension_modes.add("preference_photo_mode_x_beauty");
|
||||
});
|
||||
|
||||
if( supported_extension_modes.size() == 0 ) {
|
||||
Log.d(TAG, "test requires camera extensions");
|
||||
return;
|
||||
}
|
||||
|
||||
boolean check_exif = true;
|
||||
boolean is_samsung = Build.MANUFACTURER.toLowerCase(Locale.US).contains("samsung");
|
||||
if( is_samsung && Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU ) {
|
||||
// Samsung Galaxy S10e Android 12 doesn't store various exif tags with vendor extensions
|
||||
// unclear if this is Samsung specific or Android version specific
|
||||
check_exif = false;
|
||||
}
|
||||
|
||||
for(String photo_mode : supported_extension_modes) {
|
||||
mActivityRule.getScenario().onActivity(activity -> {
|
||||
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(activity);
|
||||
SharedPreferences.Editor editor = settings.edit();
|
||||
editor.putString(PreferenceKeys.PhotoModePreferenceKey, photo_mode);
|
||||
editor.apply();
|
||||
});
|
||||
updateForSettings();
|
||||
|
||||
subTestTakePhoto(false, false, false, false, false, false, false, false);
|
||||
|
||||
if( check_exif ) {
|
||||
mActivityRule.getScenario().onActivity(activity -> {
|
||||
try {
|
||||
TestUtils.testExif(activity, activity.test_last_saved_image, activity.test_last_saved_imageuri, true, true, false);
|
||||
}
|
||||
catch(IOException e) {
|
||||
e.printStackTrace();
|
||||
fail();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
mActivityRule.getScenario().onActivity(activity -> {
|
||||
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(activity);
|
||||
SharedPreferences.Editor editor = settings.edit();
|
||||
editor.putString(PreferenceKeys.PhotoModePreferenceKey, "preference_photo_mode_std");
|
||||
editor.apply();
|
||||
});
|
||||
updateForSettings();
|
||||
|
||||
if( getActivityValue(activity -> activity.getPreview().getCameraControllerManager().getNumberOfCameras()) > 1 ) {
|
||||
Log.d(TAG, "test front camera");
|
||||
mActivityRule.getScenario().onActivity(activity -> {
|
||||
Log.d(TAG, "switch camera");
|
||||
View switchCameraButton = activity.findViewById(net.sourceforge.opencamera.R.id.switch_camera);
|
||||
clickView(switchCameraButton);
|
||||
});
|
||||
waitUntilCameraOpened();
|
||||
|
||||
for(String photo_mode : supported_extension_modes) {
|
||||
mActivityRule.getScenario().onActivity(activity -> {
|
||||
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(activity);
|
||||
SharedPreferences.Editor editor = settings.edit();
|
||||
editor.putString(PreferenceKeys.PhotoModePreferenceKey, photo_mode);
|
||||
editor.apply();
|
||||
});
|
||||
updateForSettings();
|
||||
|
||||
subTestTakePhoto(false, false, false, false, false, false, false, false);
|
||||
|
||||
if( check_exif ) {
|
||||
mActivityRule.getScenario().onActivity(activity -> {
|
||||
try {
|
||||
TestUtils.testExif(activity, activity.test_last_saved_image, activity.test_last_saved_imageuri, true, true, false);
|
||||
}
|
||||
catch(IOException e) {
|
||||
e.printStackTrace();
|
||||
fail();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
mActivityRule.getScenario().onActivity(activity -> {
|
||||
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(activity);
|
||||
SharedPreferences.Editor editor = settings.edit();
|
||||
editor.putString(PreferenceKeys.PhotoModePreferenceKey, "preference_photo_mode_std");
|
||||
editor.apply();
|
||||
});
|
||||
updateForSettings();
|
||||
}
|
||||
}
|
||||
|
||||
private int getNFiles() {
|
||||
// count initial files in folder
|
||||
String [] files = getActivityValue(activity -> TestUtils.filesInSaveFolder(activity));
|
||||
@ -6575,6 +6687,7 @@ public class InstrumentedTest {
|
||||
setToDefault();
|
||||
|
||||
if( !getActivityValue(activity -> activity.getPreview().usingCamera2API()) ) {
|
||||
Log.d(TAG, "test requires camera2 api");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -12,6 +12,7 @@ import android.database.Cursor;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.graphics.Matrix;
|
||||
import android.hardware.camera2.CameraExtensionCharacteristics;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Environment;
|
||||
@ -1132,6 +1133,7 @@ public class TestUtils {
|
||||
boolean is_expo = activity.supportsExpoBracketing() && sharedPreferences.getString(PreferenceKeys.PhotoModePreferenceKey, "preference_photo_mode_std").equals("preference_photo_mode_expo_bracketing");
|
||||
boolean is_focus_bracketing = activity.supportsFocusBracketing() && sharedPreferences.getString(PreferenceKeys.PhotoModePreferenceKey, "preference_photo_mode_std").equals("preference_photo_mode_focus_bracketing");
|
||||
boolean is_fast_burst = activity.supportsFastBurst() && sharedPreferences.getString(PreferenceKeys.PhotoModePreferenceKey, "preference_photo_mode_std").equals("preference_photo_mode_fast_burst");
|
||||
boolean is_x_night = activity.supportsCameraExtension(CameraExtensionCharacteristics.EXTENSION_NIGHT) && sharedPreferences.getString(PreferenceKeys.PhotoModePreferenceKey, "preference_photo_mode_std").equals("preference_photo_mode_x_night");
|
||||
String n_expo_images_s = sharedPreferences.getString(PreferenceKeys.ExpoBracketingNImagesPreferenceKey, "3");
|
||||
int n_expo_images = Integer.parseInt(n_expo_images_s);
|
||||
String n_focus_bracketing_images_s = sharedPreferences.getString(PreferenceKeys.FocusBracketingNImagesPreferenceKey, "3");
|
||||
@ -1168,6 +1170,9 @@ public class TestUtils {
|
||||
//suffix = "_" + (n_fast_burst_images); // when burst numbering starts from _1
|
||||
max_time_s = 4; // takes longer to save 20 images!
|
||||
}
|
||||
else if( is_x_night ) {
|
||||
suffix = "_Night";
|
||||
}
|
||||
|
||||
if( is_raw ) {
|
||||
max_time_s += 6; // extra time needed for Nexus 6 at least
|
||||
|
Loading…
Reference in New Issue
Block a user