Skip to content

Commit 4aa0cb9

Browse files
committed
Android preferences stage I.
1 parent cb0f7c9 commit 4aa0cb9

24 files changed

+1311
-18
lines changed

Android/.idea/deploymentTargetDropDown.xml

Lines changed: 17 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Android/app/build.gradle

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,9 @@ android {
4646

4747
dependencies {
4848
implementation fileTree(include: ['*.jar'], dir: 'libs')
49+
def appcompat_version = "1.6.1"
50+
implementation "androidx.appcompat:appcompat:$appcompat_version"
51+
def preference_version = "1.2.1"
52+
implementation "androidx.preference:preference:$preference_version"
53+
4954
}

Android/app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -55,25 +55,17 @@
5555
<!-- if you want to capture audio, uncomment this. -->
5656
<!-- <uses-permission android:name="android.permission.RECORD_AUDIO" /> -->
5757

58-
<!-- Create a Java class extending SDLActivity and place it in a
59-
directory under app/src/main/java matching the package, e.g. app/src/main/java/com/gamemaker/game/MyGame.java
60-
61-
then replace "SDLActivity" with the name of your class (e.g. "MyGame")
62-
in the XML below.
63-
64-
An example Java class can be found in README-android.md
65-
-->
6658
<application android:label="@string/app_name"
6759
android:icon="@mipmap/ic_launcher"
6860
android:allowBackup="true"
69-
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
61+
android:theme="@style/AppTheme"
7062
android:hardwareAccelerated="true" >
7163

7264
<!-- Example of setting SDL hints from AndroidManifest.xml:
7365
<meta-data android:name="SDL_ENV.SDL_ACCELEROMETER_AS_JOYSTICK" android:value="0"/>
7466
-->
7567

76-
<activity android:name="SDLActivity"
68+
<activity android:name="org.artoolkitx.cameracalibration.CameraCalibrationActivity"
7769
android:label="@string/app_name"
7870
android:alwaysRetainTaskState="true"
7971
android:launchMode="singleInstance"

Android/app/src/main/cpp/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ set(SOURCE
117117
${ARTOOLKITX_CAMERA_CALIBRATION_HOME}/flow.hpp
118118
${ARTOOLKITX_CAMERA_CALIBRATION_HOME}/prefs.hpp
119119
${ARTOOLKITX_CAMERA_CALIBRATION_HOME}/prefsNull.cpp
120+
${ARTOOLKITX_CAMERA_CALIBRATION_HOME}/prefsAndroid.cpp
120121
${ARTOOLKITX_CAMERA_CALIBRATION_HOME}/Eden/Eden.h
121122
${ARTOOLKITX_CAMERA_CALIBRATION_HOME}/Eden/EdenError.h
122123
${ARTOOLKITX_CAMERA_CALIBRATION_HOME}/Eden/EdenGLFont.c

Android/app/src/main/java/org/artoolkitx/arx/arxj/ARX_jni.java

Lines changed: 716 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package org.artoolkitx.utilities.cameracalibration;
2+
3+
import android.content.Intent;
4+
import android.os.Bundle;
5+
import android.net.Uri;
6+
import android.view.Menu;
7+
import android.view.MenuInflater;
8+
import android.view.MenuItem;
9+
10+
import androidx.annotation.NonNull;
11+
import androidx.appcompat.app.ActionBar;
12+
13+
import org.libsdl.app.R;
14+
import org.libsdl.app.SDLActivity;
15+
16+
public class CameraCalibrationActivity extends SDLActivity {
17+
@Override
18+
protected void onCreate(Bundle savedInstanceState) {
19+
super.onCreate(savedInstanceState);
20+
//ViewGroup layout = mLayout;
21+
22+
ActionBar actionBar = getSupportActionBar();
23+
actionBar.setDisplayShowTitleEnabled(false);
24+
actionBar.setHomeAsUpIndicator(android.R.drawable.ic_menu_close_clear_cancel);
25+
actionBar.setDisplayHomeAsUpEnabled(true);
26+
}
27+
28+
@Override
29+
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
30+
switch (item.getItemId()) {
31+
case android.R.id.home:
32+
this.finish();
33+
return true;
34+
case R.id.menu_help:
35+
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/artoolkitx/artoolkitx-calibration/wiki")));
36+
return true;
37+
case R.id.menu_print:
38+
return true;
39+
case R.id.menu_settings:
40+
getSupportFragmentManager().beginTransaction()
41+
.replace(android.R.id.content, new CameraCalibrationSettingsFragment())
42+
.addToBackStack("Settings")
43+
.commit();
44+
return true;
45+
}
46+
return super.onOptionsItemSelected(item);
47+
}
48+
49+
@Override
50+
public boolean onCreateOptionsMenu(Menu menu) {
51+
MenuInflater inflater = getMenuInflater();
52+
inflater.inflate(R.menu.main_menu, menu);
53+
return true;
54+
}
55+
56+
}
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package org.artoolkitx.utilities.cameracalibration;
2+
3+
import android.graphics.Color;
4+
import android.os.Bundle;
5+
import android.view.LayoutInflater;
6+
import android.view.View;
7+
import android.view.ViewGroup;
8+
9+
import androidx.annotation.NonNull;
10+
import androidx.annotation.Nullable;
11+
import androidx.preference.EditTextPreference;
12+
import androidx.preference.ListPreference;
13+
import androidx.preference.PreferenceFragmentCompat;
14+
import androidx.preference.SwitchPreferenceCompat;
15+
16+
import org.artoolkitx.arx.arxj.ARX_jni;
17+
import org.libsdl.app.R;
18+
19+
import java.util.ArrayList;
20+
import java.util.List;
21+
22+
public class CameraCalibrationSettingsFragment extends PreferenceFragmentCompat {
23+
@Override
24+
@SuppressWarnings("ConstantConditions")
25+
public void onCreatePreferences(Bundle savedInstanceState, @Nullable String rootKey) {
26+
setPreferencesFromResource(R.xml.cameracalibrationsettings, rootKey);
27+
final ListPreference camera = (ListPreference)findPreference("camera");
28+
final SwitchPreferenceCompat upload_canonical = (SwitchPreferenceCompat)findPreference("upload_canonical");
29+
final SwitchPreferenceCompat upload_user = (SwitchPreferenceCompat)findPreference("upload_user");
30+
final EditTextPreference upload_user_csuu = (EditTextPreference)findPreference("upload_user_csuu");
31+
final EditTextPreference upload_user_csat= (EditTextPreference)findPreference("upload_user_csat");
32+
if (Config.ARTOOLKITX_CSAT.isEmpty() || Config.ARTOOLKITX_CSUU.isEmpty()) {
33+
upload_canonical.setVisible(false);
34+
upload_user.setVisible(true);
35+
upload_user_csuu.setVisible(true);
36+
upload_user_csat.setVisible(true);
37+
} else {
38+
upload_canonical.setVisible(true);
39+
upload_user.setVisible(false);
40+
upload_user_csuu.setVisible(false);
41+
upload_user_csat.setVisible(false);
42+
}
43+
setCameraInputList(camera);
44+
}
45+
46+
@NonNull
47+
@Override
48+
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
49+
View view = super.onCreateView(inflater, container, savedInstanceState);
50+
view.setBackgroundColor(Color.WHITE);
51+
return view;
52+
}
53+
54+
protected static void setCameraInputList(ListPreference lp) {
55+
List<String> entriesList = new ArrayList<>();
56+
List<String> entryValuesList = new ArrayList<>();
57+
int cameraCount = ARX_jni.arwCreateVideoSourceInfoList("-module=Android");
58+
for (int i = 0; i < cameraCount; i++) {
59+
String[] name = new String[1];
60+
String[] model = new String[1];
61+
String[] UID = new String[1];
62+
int[] flags = new int[1];
63+
String[] openToken = new String[1];
64+
if (ARX_jni.arwGetVideoSourceInfoListEntry(i, name, model, UID, flags, openToken)) {
65+
entriesList.add(name[0]);
66+
entryValuesList.add(openToken[0]);
67+
}
68+
}
69+
lp.setEntries(entriesList.toArray(new String[0]));
70+
lp.setEntryValues(entryValuesList.toArray(new String[0]));
71+
}
72+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package org.artoolkitx.utilities.cameracalibration;
2+
public class Config
3+
{
4+
public static final String ARTOOLKITX_CSAT = "";
5+
public static final String ARTOOLKITX_CSUU = "";
6+
}

Android/app/src/main/java/org/libsdl/app/SDLActivity.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,16 @@
5050
import android.widget.TextView;
5151
import android.widget.Toast;
5252

53+
import androidx.appcompat.app.AppCompatActivity;
54+
5355
import java.util.Hashtable;
5456
import java.util.Locale;
5557

5658

5759
/**
5860
SDL Activity
5961
*/
60-
public class SDLActivity extends Activity implements View.OnSystemUiVisibilityChangeListener {
62+
public class SDLActivity extends AppCompatActivity implements View.OnSystemUiVisibilityChangeListener {
6163
private static final String TAG = "SDL";
6264
private static final int SDL_MAJOR_VERSION = 3;
6365
private static final int SDL_MINOR_VERSION = 0;
757 Bytes
Loading

0 commit comments

Comments
 (0)