Skip to content

Commit 3c87c83

Browse files
committed
Initial state of pattern prefs, plus set defaults when pattern chages. Generate event when settings completed. Handle change of state of save/upload prefs.
1 parent 6ba3165 commit 3c87c83

File tree

4 files changed

+101
-12
lines changed

4 files changed

+101
-12
lines changed

Android/app/src/main/java/org/artoolkitx/utilities/cameracalibration/CameraCalibrationActivity.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,13 @@ protected void onCreate(Bundle savedInstanceState) {
2525
super.onCreate(savedInstanceState);
2626

2727
findViewById(R.id.btn_cancel).setOnClickListener(view -> {
28-
CameraCalibrationActivity.handleBackButton();
28+
CameraCalibrationJNI.handleBackButton();
2929
});
3030
findViewById(R.id.btn_add).setOnClickListener(view -> {
31-
CameraCalibrationActivity.handleAddButton();
31+
CameraCalibrationJNI.handleAddButton();
3232
});
3333
}
3434

35-
public static native void handleBackButton();
36-
public static native void handleAddButton();
37-
3835
@Override
3936
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
4037
switch (item.getItemId()) {
@@ -49,7 +46,7 @@ public boolean onOptionsItemSelected(@NonNull MenuItem item) {
4946
try
5047
{
5148
PrintDocumentAdapter printAdapter = null;
52-
if (getSharedPreferences("cameracalibrationsettings", MODE_PRIVATE).getString("print_paper_size", "a4") == "usletter") {
49+
if (getSharedPreferences( getPackageName() + "_preferences", MODE_PRIVATE).getString("print_paper_size", "a4").equals("usletter")) {
5350
printAdapter = new PdfDocumentAdapter(this, R.raw.printusletter, "Calibration chessboard (US Letter)", 1);
5451
} else {
5552
// Assume A4.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package org.artoolkitx.utilities.cameracalibration;
2+
3+
public class CameraCalibrationJNI {
4+
5+
public static native void handleBackButton();
6+
public static native void handleAddButton();
7+
8+
public static native void sendPreferencesChangedEvent();
9+
}

Android/app/src/main/java/org/artoolkitx/utilities/cameracalibration/CameraCalibrationSettingsFragment.java

Lines changed: 77 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,21 @@
11
package org.artoolkitx.utilities.cameracalibration;
22

3+
import android.content.SharedPreferences;
34
import android.graphics.Color;
45
import android.os.Bundle;
56
import android.text.InputType;
67
import android.util.Log;
78
import android.view.LayoutInflater;
89
import android.view.View;
910
import android.view.ViewGroup;
11+
import android.widget.BaseAdapter;
1012
import android.widget.EditText;
1113

1214
import androidx.annotation.NonNull;
1315
import androidx.annotation.Nullable;
1416
import androidx.preference.EditTextPreference;
1517
import androidx.preference.ListPreference;
18+
import androidx.preference.Preference;
1619
import androidx.preference.PreferenceFragmentCompat;
1720
import androidx.preference.SwitchPreferenceCompat;
1821

@@ -22,28 +25,48 @@
2225
import java.util.ArrayList;
2326
import java.util.List;
2427

25-
public class CameraCalibrationSettingsFragment extends PreferenceFragmentCompat {
28+
public class CameraCalibrationSettingsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener {
2629

27-
static final String LOGTAG = "CameraCalibrationSettingsFragment";
30+
static final String TAG = "CameraCalibrationSettingsFragment";
2831
@Override
2932
@SuppressWarnings("ConstantConditions")
3033
public void onCreatePreferences(Bundle savedInstanceState, @Nullable String rootKey) {
34+
35+
// Init the pattern prefs on first run.
36+
if (!getPreferenceManager().getSharedPreferences().contains("pattern")) {
37+
SharedPreferences.Editor editor = getPreferenceManager().getSharedPreferences().edit();
38+
editor.putString("pattern", "chessboard");
39+
editor.putString("pattern_width", "7");
40+
editor.putString("pattern_height", "5");
41+
editor.putString("pattern_spacing", "30.0");
42+
editor.apply();
43+
}
44+
3145
setPreferencesFromResource(R.xml.cameracalibrationsettings, rootKey);
3246

3347
final ListPreference camera = (ListPreference)findPreference("camera");
3448
setCameraInputList(camera);
3549

3650
// Toggle fields on or off.
51+
final SwitchPreferenceCompat save = (SwitchPreferenceCompat)findPreference("save");
3752
final SwitchPreferenceCompat upload_canonical = (SwitchPreferenceCompat)findPreference("upload_canonical");
3853
final SwitchPreferenceCompat upload_user = (SwitchPreferenceCompat)findPreference("upload_user");
3954
final EditTextPreference upload_user_csuu = (EditTextPreference)findPreference("upload_user_csuu");
4055
final EditTextPreference upload_user_csat= (EditTextPreference)findPreference("upload_user_csat");
4156
if (Config.ARTOOLKITX_CSAT.isEmpty() || Config.ARTOOLKITX_CSUU.isEmpty()) {
4257
upload_canonical.setVisible(false);
58+
if (!upload_user.isChecked()) {
59+
save.setChecked(true);
60+
save.setEnabled(false);
61+
}
4362
upload_user.setVisible(true);
4463
upload_user_csuu.setVisible(true);
4564
upload_user_csat.setVisible(true);
4665
} else {
66+
if (!upload_canonical.isChecked()) {
67+
save.setChecked(true);
68+
save.setEnabled(false);
69+
}
4770
upload_canonical.setVisible(true);
4871
upload_user.setVisible(false);
4972
upload_user_csuu.setVisible(false);
@@ -73,6 +96,7 @@ public void onBindEditText(@NonNull EditText editText) {
7396
pattern_width.setOnBindEditTextListener(numbersOnly);
7497
pattern_height.setOnBindEditTextListener(numbersOnly);
7598
pattern_spacing.setOnBindEditTextListener(numbersDecimalOnly);
99+
76100
}
77101

78102
@NonNull
@@ -87,22 +111,70 @@ protected static void setCameraInputList(ListPreference lp) {
87111
List<String> entriesList = new ArrayList<>();
88112
List<String> entryValuesList = new ArrayList<>();
89113
int cameraCount = ARX_jni.arwCreateVideoSourceInfoList("-module=Android");
90-
Log.d(LOGTAG, "setCameraInputList: cameraCount=" + cameraCount);
114+
Log.d(TAG, "setCameraInputList: cameraCount=" + cameraCount);
91115
for (int i = 0; i < cameraCount; i++) {
92116
String[] name = new String[1];
93117
String[] model = new String[1];
94118
String[] UID = new String[1];
95119
int[] flags = new int[1];
96120
String[] openToken = new String[1];
97121
if (ARX_jni.arwGetVideoSourceInfoListEntry(i, name, model, UID, flags, openToken)) {
98-
Log.d(LOGTAG, "setCameraInputList: Entry " + i + " name=" + name[0] + ", model='" + model[0] + "', UID='"+ UID[0] + "', flags=0x" + Integer.toHexString(flags[0]) + ", openToken='"+ openToken[0] + "'.");
122+
Log.d(TAG, "setCameraInputList: Entry " + i + " name=" + name[0] + ", model='" + model[0] + "', UID='"+ UID[0] + "', flags=0x" + Integer.toHexString(flags[0]) + ", openToken='"+ openToken[0] + "'.");
99123
entriesList.add(name[0]);
100124
entryValuesList.add(openToken[0]);
101125
} else {
102-
Log.e(LOGTAG, "setCameraInputList: arwGetVideoSourceInfoListEntry error.\n");
126+
Log.e(TAG, "setCameraInputList: arwGetVideoSourceInfoListEntry error.\n");
103127
}
104128
}
105129
lp.setEntries(entriesList.toArray(new String[0]));
106130
lp.setEntryValues(entryValuesList.toArray(new String[0]));
107131
}
132+
133+
@Override
134+
public void onResume() {
135+
super.onResume();
136+
getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
137+
}
138+
139+
@Override
140+
public void onPause() {
141+
super.onPause();
142+
getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
143+
CameraCalibrationJNI.sendPreferencesChangedEvent();
144+
}
145+
146+
@Override
147+
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
148+
if (key.equals("pattern")) {
149+
String val = sharedPreferences.getString(key, "");
150+
final EditTextPreference pattern_width = getPreferenceManager().findPreference("pattern_width");
151+
final EditTextPreference pattern_height = getPreferenceManager().findPreference("pattern_height");
152+
final EditTextPreference pattern_spacing = getPreferenceManager().findPreference("pattern_spacing");
153+
if (val.equals("circles")) {
154+
pattern_width.setText("0");
155+
pattern_height.setText("0");
156+
pattern_spacing.setText("0.0");
157+
} else if (val.equals("asymmetriccircles")) {
158+
pattern_width.setText("4");
159+
pattern_height.setText("11");
160+
pattern_spacing.setText("20.0");
161+
} else { // "chessboard" or default.
162+
pattern_width.setText("7");
163+
pattern_height.setText("5");
164+
pattern_spacing.setText("30.0");
165+
}
166+
} else if (key.equals("upload_canonical") || key.equals("upload_user")) {
167+
boolean val = sharedPreferences.getBoolean(key, true);
168+
final SwitchPreferenceCompat save = getPreferenceManager().findPreference("save");
169+
if (!val) {
170+
if (!sharedPreferences.getBoolean("save", false)) {
171+
save.setChecked(true);
172+
}
173+
save.setEnabled(false);
174+
} else {
175+
save.setEnabled(true);
176+
}
177+
}
178+
}
179+
108180
}

calib_camera.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1451,7 +1451,7 @@ static void saveParam(const ARParam *param, ARdouble err_min, ARdouble err_avg,
14511451

14521452
#ifdef ANDROID
14531453
#include <jni.h>
1454-
#define JNIFUNCTION_CC(sig) Java_org_artoolkitx_utilities_cameracalibration_CameraCalibrationActivity_##sig
1454+
#define JNIFUNCTION_CC(sig) Java_org_artoolkitx_utilities_cameracalibration_CameraCalibrationJNI_##sig
14551455

14561456
extern "C" JNIEXPORT void JNICALL JNIFUNCTION_CC(handleBackButton(void))
14571457
{
@@ -1463,5 +1463,16 @@ extern "C" JNIEXPORT void JNICALL JNIFUNCTION_CC(handleAddButton(void))
14631463
flowHandleEvent(EVENT_TOUCH);
14641464
}
14651465

1466+
extern "C" JNIEXPORT void JNICALL JNIFUNCTION_CC(sendPreferencesChangedEvent(void))
1467+
{
1468+
SDL_Event event;
1469+
SDL_zero(event);
1470+
event.type = gSDLEventPreferencesChanged;
1471+
event.user.code = (Sint32)0;
1472+
event.user.data1 = NULL;
1473+
event.user.data2 = NULL;
1474+
SDL_PushEvent(&event);
1475+
}
1476+
14661477
#endif
14671478

0 commit comments

Comments
 (0)