1
1
package org .artoolkitx .utilities .cameracalibration ;
2
2
3
+ import android .content .SharedPreferences ;
3
4
import android .graphics .Color ;
4
5
import android .os .Bundle ;
5
6
import android .text .InputType ;
6
7
import android .util .Log ;
7
8
import android .view .LayoutInflater ;
8
9
import android .view .View ;
9
10
import android .view .ViewGroup ;
11
+ import android .widget .BaseAdapter ;
10
12
import android .widget .EditText ;
11
13
12
14
import androidx .annotation .NonNull ;
13
15
import androidx .annotation .Nullable ;
14
16
import androidx .preference .EditTextPreference ;
15
17
import androidx .preference .ListPreference ;
18
+ import androidx .preference .Preference ;
16
19
import androidx .preference .PreferenceFragmentCompat ;
17
20
import androidx .preference .SwitchPreferenceCompat ;
18
21
22
25
import java .util .ArrayList ;
23
26
import java .util .List ;
24
27
25
- public class CameraCalibrationSettingsFragment extends PreferenceFragmentCompat {
28
+ public class CameraCalibrationSettingsFragment extends PreferenceFragmentCompat implements SharedPreferences . OnSharedPreferenceChangeListener {
26
29
27
- static final String LOGTAG = "CameraCalibrationSettingsFragment" ;
30
+ static final String TAG = "CameraCalibrationSettingsFragment" ;
28
31
@ Override
29
32
@ SuppressWarnings ("ConstantConditions" )
30
33
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
+
31
45
setPreferencesFromResource (R .xml .cameracalibrationsettings , rootKey );
32
46
33
47
final ListPreference camera = (ListPreference )findPreference ("camera" );
34
48
setCameraInputList (camera );
35
49
36
50
// Toggle fields on or off.
51
+ final SwitchPreferenceCompat save = (SwitchPreferenceCompat )findPreference ("save" );
37
52
final SwitchPreferenceCompat upload_canonical = (SwitchPreferenceCompat )findPreference ("upload_canonical" );
38
53
final SwitchPreferenceCompat upload_user = (SwitchPreferenceCompat )findPreference ("upload_user" );
39
54
final EditTextPreference upload_user_csuu = (EditTextPreference )findPreference ("upload_user_csuu" );
40
55
final EditTextPreference upload_user_csat = (EditTextPreference )findPreference ("upload_user_csat" );
41
56
if (Config .ARTOOLKITX_CSAT .isEmpty () || Config .ARTOOLKITX_CSUU .isEmpty ()) {
42
57
upload_canonical .setVisible (false );
58
+ if (!upload_user .isChecked ()) {
59
+ save .setChecked (true );
60
+ save .setEnabled (false );
61
+ }
43
62
upload_user .setVisible (true );
44
63
upload_user_csuu .setVisible (true );
45
64
upload_user_csat .setVisible (true );
46
65
} else {
66
+ if (!upload_canonical .isChecked ()) {
67
+ save .setChecked (true );
68
+ save .setEnabled (false );
69
+ }
47
70
upload_canonical .setVisible (true );
48
71
upload_user .setVisible (false );
49
72
upload_user_csuu .setVisible (false );
@@ -73,6 +96,7 @@ public void onBindEditText(@NonNull EditText editText) {
73
96
pattern_width .setOnBindEditTextListener (numbersOnly );
74
97
pattern_height .setOnBindEditTextListener (numbersOnly );
75
98
pattern_spacing .setOnBindEditTextListener (numbersDecimalOnly );
99
+
76
100
}
77
101
78
102
@ NonNull
@@ -87,22 +111,70 @@ protected static void setCameraInputList(ListPreference lp) {
87
111
List <String > entriesList = new ArrayList <>();
88
112
List <String > entryValuesList = new ArrayList <>();
89
113
int cameraCount = ARX_jni .arwCreateVideoSourceInfoList ("-module=Android" );
90
- Log .d (LOGTAG , "setCameraInputList: cameraCount=" + cameraCount );
114
+ Log .d (TAG , "setCameraInputList: cameraCount=" + cameraCount );
91
115
for (int i = 0 ; i < cameraCount ; i ++) {
92
116
String [] name = new String [1 ];
93
117
String [] model = new String [1 ];
94
118
String [] UID = new String [1 ];
95
119
int [] flags = new int [1 ];
96
120
String [] openToken = new String [1 ];
97
121
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 ] + "'." );
99
123
entriesList .add (name [0 ]);
100
124
entryValuesList .add (openToken [0 ]);
101
125
} else {
102
- Log .e (LOGTAG , "setCameraInputList: arwGetVideoSourceInfoListEntry error.\n " );
126
+ Log .e (TAG , "setCameraInputList: arwGetVideoSourceInfoListEntry error.\n " );
103
127
}
104
128
}
105
129
lp .setEntries (entriesList .toArray (new String [0 ]));
106
130
lp .setEntryValues (entryValuesList .toArray (new String [0 ]));
107
131
}
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
+
108
180
}
0 commit comments