From 89f0dbac04f6b62094f57b7ed4380f228237e622 Mon Sep 17 00:00:00 2001 From: biohazardpb4 Date: Sun, 27 Sep 2015 13:00:50 -0400 Subject: [PATCH 1/8] Hooking up Android event listeners to send events to wiigee lib. Also enabling the accelerometer upon framework initialization. --- .../src/org/wiigee/control/AndroidWiigee.java | 26 ++++++++-- .../src/org/wiigee/device/AndroidDevice.java | 48 +++++++++++++++++++ 2 files changed, 69 insertions(+), 5 deletions(-) diff --git a/wiigee-plugin-android/src/org/wiigee/control/AndroidWiigee.java b/wiigee-plugin-android/src/org/wiigee/control/AndroidWiigee.java index 067ea7b..561e4d7 100644 --- a/wiigee-plugin-android/src/org/wiigee/control/AndroidWiigee.java +++ b/wiigee-plugin-android/src/org/wiigee/control/AndroidWiigee.java @@ -24,11 +24,15 @@ package org.wiigee.control; import android.content.Context; +import android.widget.Button; + import org.wiigee.device.AndroidDevice; import org.wiigee.event.GestureListener; import org.wiigee.filter.Filter; import org.wiigee.util.Log; +import java.io.IOException; + /** * This is for using wiigee on Android Smartphones. This port has been * initiated by Maarten 'MrSnowflake' Krijn and updated by 'zl25drexel' @@ -54,6 +58,11 @@ public AndroidWiigee(Context context) { super(); Log.write("This is wiigee-plugin-android (Andgee) version "+pluginversion+" ("+pluginreleasedate+")"); device = new AndroidDevice(context); + try { + device.setAccelerationEnabled(true); + } catch (IOException e) { + throw new RuntimeException(e); + } } public void addGestureListener(GestureListener listener) { @@ -69,14 +78,21 @@ public AndroidDevice getDevice() { return device; } - /** - * Sets the Trainbutton for all wiimotes; + * Sets the Train button. * - * @param b Button encoding, see static Wiimote values + * @param button Android Button view */ - public void setTrainButton(int b) { - device.setTrainButton(b); + public void setTrainButton(Button button) { + device.setTrainButton(button); + } + + public void setRecognitionButton(Button button) { + device.setRecognitionButton(button); + } + + public void setCloseGestureButton(Button button) { + device.setCloseGestureButton(button); } /** diff --git a/wiigee-plugin-android/src/org/wiigee/device/AndroidDevice.java b/wiigee-plugin-android/src/org/wiigee/device/AndroidDevice.java index 77378d0..3e797dc 100644 --- a/wiigee-plugin-android/src/org/wiigee/device/AndroidDevice.java +++ b/wiigee-plugin-android/src/org/wiigee/device/AndroidDevice.java @@ -29,6 +29,9 @@ import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; +import android.view.MotionEvent; +import android.view.View; +import android.widget.Button; /** * Device representation for Android Mobile Phones, like HTC Magic. Since @@ -100,4 +103,49 @@ public void onAccuracyChanged(Sensor arg0, int arg1) { // Nothing to do. } + @Override + public void setTrainButton(int b) { + throw new UnsupportedOperationException("Please call setTrainButton(Button b)"); + } + + public void setTrainButton(final Button button) { + super.setTrainButton(button.getId()); + attachEventListeners(button); + } + + @Override + public void setRecognitionButton(int b) { + throw new UnsupportedOperationException("Please call setTrainButton(Button b)"); + } + + public void setRecognitionButton(Button button) { + super.setRecognitionButton(button.getId()); + attachEventListeners(button); + } + + @Override + public void setCloseGestureButton(int b) { + throw new UnsupportedOperationException("Please call setTrainButton(Button b)"); + } + + public void setCloseGestureButton(Button button) { + super.setCloseGestureButton(button.getId()); + attachEventListeners(button); + } + + private void attachEventListeners(final Button button) { + button.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + if (event.getAction() == MotionEvent.ACTION_DOWN) { + fireButtonPressedEvent(button.getId()); + return true; + } else if (event.getAction() == MotionEvent.ACTION_UP) { + fireButtonReleasedEvent(button.getId()); + return true; + } + return false; + }; + }); + } } From a50eb5297c654e41108939a2515c2a725d9ae53b Mon Sep 17 00:00:00 2001 From: biohazardpb4 Date: Sun, 27 Sep 2015 13:45:55 -0400 Subject: [PATCH 2/8] adding Android Log implementation --- .gitignore | 8 +- wiigee-lib/nbproject/build-impl.xml | 987 +++++++++++++++--- wiigee-lib/nbproject/genfiles.properties | 4 +- wiigee-lib/src/org/wiigee/util/Log.java | 35 +- wiigee-plugin-android/build.xml | 3 +- .../lib/nblibraries.properties | 6 +- .../nbproject/build-impl.xml | 746 +++++++++++-- .../nbproject/genfiles.properties | 8 +- .../src/org/wiigee/control/AndroidWiigee.java | 2 + .../src/org/wiigee/util/AndroidLogger.java | 18 + 10 files changed, 1544 insertions(+), 273 deletions(-) create mode 100644 wiigee-plugin-android/src/org/wiigee/util/AndroidLogger.java diff --git a/.gitignore b/.gitignore index bcddc15..d4fad2e 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,7 @@ -.DS* \ No newline at end of file +.DS* +/wiigee-lib/nbproject/private/ +/wiigee-plugin-android/nbproject/private/ +/wiigee-lib/build/ +/wiigee-lib/dist/ +/wiigee-plugin-android/build/ +/wiigee-plugin-android/dist/ \ No newline at end of file diff --git a/wiigee-lib/nbproject/build-impl.xml b/wiigee-lib/nbproject/build-impl.xml index 55720ab..f23b98e 100644 --- a/wiigee-lib/nbproject/build-impl.xml +++ b/wiigee-lib/nbproject/build-impl.xml @@ -12,18 +12,18 @@ is divided into following sections: - execution - debugging - javadoc - - junit compilation - - junit execution - - junit debugging + - test compilation + - test execution + - test debugging - applet - cleanup --> - + - + @@ -42,23 +42,27 @@ is divided into following sections: - - - - - + + + + + - - - + + + + + - + - + + + - + @@ -75,20 +79,70 @@ is divided into following sections: + - + + + + + + + + + - - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -114,6 +168,7 @@ is divided into following sections: + @@ -125,6 +180,7 @@ is divided into following sections: + @@ -140,12 +196,52 @@ is divided into following sections: - + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -172,11 +268,54 @@ is divided into following sections: - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -186,7 +325,7 @@ is divided into following sections: - + @@ -195,11 +334,15 @@ is divided into following sections: - + + + + + @@ -216,44 +359,390 @@ is divided into following sections: Must set javac.includes - + + + - + + + + - + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No tests executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set JVM to use for profiling in profiler.info.jvm + Must set profiler agent JVM arguments in profiler.info.jvmargs.agent + + @@ -305,11 +794,13 @@ is divided into following sections: + - - + + + @@ -326,12 +817,15 @@ is divided into following sections: + - - + + + + @@ -344,20 +838,90 @@ is divided into following sections: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + @@ -380,12 +944,18 @@ is divided into following sections: - + + + + + + + @@ -418,75 +988,67 @@ is divided into following sections: - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + To run this application from the command line without Ant, try: + + java -jar "${dist.jar.resolved}" - - - - - - - To run this application from the command line without Ant, try: + + - java -cp "${run.classpath.with.dist.jar}" ${main.class} - - - - - - - - - - - - - - - - - - - - - - - To run this application from the command line without Ant, try: - - java -jar "${dist.jar.resolved}" + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + - + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + Must select one file in the IDE or set profile.class + This target only works when run from inside the NetBeans IDE. + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + + + Must select some files in the IDE or set test.includes + + + + + Must select one file in the IDE or set run.class + + + + + Must select one file in the IDE or set applet.url + + + - + - + + + + + + + + + + + + - + + + + + + + + + + + @@ -576,7 +1258,7 @@ is divided into following sections: @@ -589,8 +1271,8 @@ is divided into following sections: - - + + @@ -604,10 +1286,10 @@ is divided into following sections: - + Must select some files in the IDE or set javac.includes - + @@ -619,14 +1301,14 @@ is divided into following sections: - + Some tests failed; see details above. @@ -639,39 +1321,40 @@ is divided into following sections: Must select some files in the IDE or set test.includes - + Some tests failed; see details above. - + + + Must select some files in the IDE or set test.class + Must select some method in the IDE or set test.method + + + + Some tests failed; see details above. + + - + Must select one file in the IDE or set test.class - - - - - - - - - - - - - - - + + + + Must select one file in the IDE or set test.class + Must select some method in the IDE or set test.method + - + + @@ -708,14 +1391,48 @@ is divided into following sections: CLEANUP SECTION =============== --> - + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + diff --git a/wiigee-lib/nbproject/genfiles.properties b/wiigee-lib/nbproject/genfiles.properties index 90ae97c..1bde6de 100644 --- a/wiigee-lib/nbproject/genfiles.properties +++ b/wiigee-lib/nbproject/genfiles.properties @@ -4,5 +4,5 @@ build.xml.stylesheet.CRC32=958a1d3e # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. nbproject/build-impl.xml.data.CRC32=afb4810b -nbproject/build-impl.xml.script.CRC32=7668b6e9 -nbproject/build-impl.xml.stylesheet.CRC32=5c621a33@1.26.1.45 +nbproject/build-impl.xml.script.CRC32=f31479d9 +nbproject/build-impl.xml.stylesheet.CRC32=876e7a8f@1.75.2.48 diff --git a/wiigee-lib/src/org/wiigee/util/Log.java b/wiigee-lib/src/org/wiigee/util/Log.java index 3cb61be..be26878 100644 --- a/wiigee-lib/src/org/wiigee/util/Log.java +++ b/wiigee-lib/src/org/wiigee/util/Log.java @@ -1,20 +1,35 @@ package org.wiigee.util; public class Log { + + public static interface Logger { + void write(int level, String message, Object caller); + } public static final int OFF = -1; public static final int NORMAL = 0; public static final int DEBUG = 1; - public static final int PRINT = 0; - public static final int FILE = 1; - public static int level = Log.NORMAL; - public static int mode = Log.PRINT; + + private static Logger logger = new Logger() { + public void write(int level, String message, Object caller) { + // console output enabled + if(caller!=null) { + System.out.println(caller.getClass()+": "+message); + } else { + System.out.println(message); + } + } + }; public static void setLevel(int n) { level = n; } + + public static void setLogger(Logger logger) { + Log.logger = logger; + } public static void write(String s) { write(Log.NORMAL, s, null); @@ -26,17 +41,7 @@ public static void write(String s, Object o) { public static void write(int n, String s, Object o) { if(level>=n) { - if(mode==Log.PRINT) { - // console output enabled - if(o!=null) { - System.out.println(o.getClass()+": "+s); - } else { - System.out.println(s); - } - } else if(mode==Log.FILE) { - // file output enabled - // TODO - } + logger.write(n, s, o); } } diff --git a/wiigee-plugin-android/build.xml b/wiigee-plugin-android/build.xml index 7e6c2a8..5fdcd95 100644 --- a/wiigee-plugin-android/build.xml +++ b/wiigee-plugin-android/build.xml @@ -51,8 +51,7 @@ -init-macrodef-junit: defines macro for junit execution -init-macrodef-debug: defines macro for class debugging -init-macrodef-java: defines macro for class execution - -do-jar-with-manifest: JAR building (if you are using a manifest) - -do-jar-without-manifest: JAR building (if you are not using a manifest) + -do-jar: JAR building run: execution of project -javadoc-build: Javadoc generation test-report: JUnit report generation diff --git a/wiigee-plugin-android/lib/nblibraries.properties b/wiigee-plugin-android/lib/nblibraries.properties index b191095..52864ae 100644 --- a/wiigee-plugin-android/lib/nblibraries.properties +++ b/wiigee-plugin-android/lib/nblibraries.properties @@ -1,3 +1,7 @@ +libs.CopyLibs.classpath=\ + ${base}/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar +libs.CopyLibs.displayName=CopyLibs Task +libs.CopyLibs.prop-version=2.0 libs.junit.classpath=\ ${base}/junit/junit-3.8.2.jar libs.junit.javadoc=\ @@ -8,5 +12,3 @@ libs.junit_4.javadoc=\ ${base}/junit_4/junit-4.5-api.zip libs.junit_4.src=\ ${base}/junit_4/junit-4.5-src.jar -libs.CopyLibs.classpath=\ - ${base}/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar diff --git a/wiigee-plugin-android/nbproject/build-impl.xml b/wiigee-plugin-android/nbproject/build-impl.xml index 2fee76d..3b0588c 100644 --- a/wiigee-plugin-android/nbproject/build-impl.xml +++ b/wiigee-plugin-android/nbproject/build-impl.xml @@ -12,18 +12,18 @@ is divided into following sections: - execution - debugging - javadoc - - junit compilation - - junit execution - - junit debugging + - test compilation + - test execution + - test debugging - applet - cleanup --> - + - + @@ -79,8 +79,16 @@ is divided into following sections: + - + + + + + + + + @@ -89,58 +97,51 @@ is divided into following sections: - + - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + - + - + - + - + - + @@ -167,6 +168,7 @@ is divided into following sections: + @@ -196,11 +198,50 @@ is divided into following sections: - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -254,6 +295,7 @@ is divided into following sections: + @@ -293,6 +335,7 @@ is divided into following sections: + @@ -316,45 +359,390 @@ is divided into following sections: Must set javac.includes - + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + - + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No tests executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set JVM to use for profiling in profiler.info.jvm + Must set profiler agent JVM arguments in profiler.info.jvmargs.agent + + @@ -412,6 +800,7 @@ is divided into following sections: + @@ -428,6 +817,7 @@ is divided into following sections: + @@ -435,6 +825,7 @@ is divided into following sections: + @@ -449,6 +840,7 @@ is divided into following sections: + @@ -460,12 +852,15 @@ is divided into following sections: + + + - - + + @@ -477,7 +872,7 @@ is divided into following sections: - + @@ -505,7 +900,7 @@ is divided into following sections: - + - - + + + - - + + + - - - - - - - To run this application from the command line without Ant, try: - - - - - - - java -cp "${run.classpath.with.dist.jar}" ${main.class} + + + + + + + + + - + - - - - - - - To run this application from the command line without Ant, try: + + + + + + + To run this application from the command line without Ant, try: - java -jar "${dist.jar.resolved}" + java -jar "${dist.jar.resolved}" - - - - - - - To run this application from the command line without Ant, try: + + + - java -jar "${dist.jar.resolved}" + + + + + + + + + + + + + + + + + + - + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + Must select one file in the IDE or set profile.class + This target only works when run from inside the NetBeans IDE. + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + + + Must select some files in the IDE or set test.includes + + + + + Must select one file in the IDE or set run.class + + + + + Must select one file in the IDE or set applet.url + + + - + + + + + + + + + + + + - + + + @@ -740,7 +1258,7 @@ is divided into following sections: @@ -753,7 +1271,7 @@ is divided into following sections: - + @@ -768,7 +1286,7 @@ is divided into following sections: - + Must select some files in the IDE or set javac.includes @@ -783,14 +1301,14 @@ is divided into following sections: - + Some tests failed; see details above. @@ -803,39 +1321,40 @@ is divided into following sections: Must select some files in the IDE or set test.includes - + Some tests failed; see details above. + + Must select some files in the IDE or set test.class + Must select some method in the IDE or set test.method + + + + Some tests failed; see details above. + + - + Must select one file in the IDE or set test.class - - - - - - - - - - - - - - - + + + + Must select one file in the IDE or set test.class + Must select some method in the IDE or set test.method + + @@ -900,9 +1419,12 @@ is divided into following sections: - - - + + + + + + diff --git a/wiigee-plugin-android/nbproject/genfiles.properties b/wiigee-plugin-android/nbproject/genfiles.properties index e1f5e2e..23a135b 100644 --- a/wiigee-plugin-android/nbproject/genfiles.properties +++ b/wiigee-plugin-android/nbproject/genfiles.properties @@ -1,8 +1,8 @@ build.xml.data.CRC32=3e9c3fb4 -build.xml.script.CRC32=d5887438 -build.xml.stylesheet.CRC32=28e38971@1.38.1.45 +build.xml.script.CRC32=f0f30010 +build.xml.stylesheet.CRC32=8064a381@1.75.2.48 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. nbproject/build-impl.xml.data.CRC32=3e9c3fb4 -nbproject/build-impl.xml.script.CRC32=e9a3f2d7 -nbproject/build-impl.xml.stylesheet.CRC32=f33e10ff@1.38.2.45 +nbproject/build-impl.xml.script.CRC32=5c2cbfc0 +nbproject/build-impl.xml.stylesheet.CRC32=876e7a8f@1.75.2.48 diff --git a/wiigee-plugin-android/src/org/wiigee/control/AndroidWiigee.java b/wiigee-plugin-android/src/org/wiigee/control/AndroidWiigee.java index 561e4d7..9079844 100644 --- a/wiigee-plugin-android/src/org/wiigee/control/AndroidWiigee.java +++ b/wiigee-plugin-android/src/org/wiigee/control/AndroidWiigee.java @@ -23,6 +23,7 @@ */ package org.wiigee.control; +import org.wiigee.util.AndroidLogger; import android.content.Context; import android.widget.Button; @@ -56,6 +57,7 @@ public class AndroidWiigee extends Wiigee { public AndroidWiigee(Context context) { super(); + Log.setLogger(new AndroidLogger()); Log.write("This is wiigee-plugin-android (Andgee) version "+pluginversion+" ("+pluginreleasedate+")"); device = new AndroidDevice(context); try { diff --git a/wiigee-plugin-android/src/org/wiigee/util/AndroidLogger.java b/wiigee-plugin-android/src/org/wiigee/util/AndroidLogger.java new file mode 100644 index 0000000..1a03f06 --- /dev/null +++ b/wiigee-plugin-android/src/org/wiigee/util/AndroidLogger.java @@ -0,0 +1,18 @@ +package org.wiigee.util; + +public class AndroidLogger implements Log.Logger { + + private static final String TAG = AndroidLogger.class.getCanonicalName(); + + public void write(int level, String message, Object caller) { + switch(level){ + case 0: + android.util.Log.i(TAG, message); + break; + case 1: + android.util.Log.d(TAG, message); + break; + } + } + +} From ebd9b0cd248e90ce38dae7c870f4f6f84fd281b6 Mon Sep 17 00:00:00 2001 From: biohazardpb4 Date: Sun, 27 Sep 2015 13:47:10 -0400 Subject: [PATCH 3/8] missed AndroidWiigee class --- wiigee-plugin-android/src/org/wiigee/control/AndroidWiigee.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wiigee-plugin-android/src/org/wiigee/control/AndroidWiigee.java b/wiigee-plugin-android/src/org/wiigee/control/AndroidWiigee.java index 9079844..417f77f 100644 --- a/wiigee-plugin-android/src/org/wiigee/control/AndroidWiigee.java +++ b/wiigee-plugin-android/src/org/wiigee/control/AndroidWiigee.java @@ -23,7 +23,6 @@ */ package org.wiigee.control; -import org.wiigee.util.AndroidLogger; import android.content.Context; import android.widget.Button; @@ -31,6 +30,7 @@ import org.wiigee.event.GestureListener; import org.wiigee.filter.Filter; import org.wiigee.util.Log; +import org.wiigee.util.AndroidLogger; import java.io.IOException; From ba57f113da5f33acce73f53100d117eaf0a19b5e Mon Sep 17 00:00:00 2001 From: biohazardpb4 Date: Sun, 27 Sep 2015 17:01:26 -0400 Subject: [PATCH 4/8] adding wiigee-gui-android project and moving the wiigee-gui project to wiigee-gui-swing --- wiigee-gui-android/.gitignore | 7 + wiigee-gui-android/.idea/.name | 1 + wiigee-gui-android/.idea/compiler.xml | 22 +++ .../.idea/copyright/profiles_settings.xml | 3 + wiigee-gui-android/.idea/gradle.xml | 19 ++ wiigee-gui-android/.idea/misc.xml | 46 +++++ wiigee-gui-android/.idea/modules.xml | 9 + .../.idea/runConfigurations.xml | 12 ++ wiigee-gui-android/.idea/vcs.xml | 6 + wiigee-gui-android/GesturePoc.iml | 19 ++ wiigee-gui-android/README | 3 + wiigee-gui-android/README~ | 0 wiigee-gui-android/app/.gitignore | 1 + wiigee-gui-android/app/app.iml | 99 +++++++++++ wiigee-gui-android/app/build.gradle | 25 +++ wiigee-gui-android/app/libs/wiigee-lib.jar | Bin 0 -> 64479 bytes .../app/libs/wiigee-plugin-android.jar | Bin 0 -> 33233 bytes wiigee-gui-android/app/proguard-rules.pro | 17 ++ .../app/src/main/AndroidManifest.xml | 21 +++ .../java/org/wiigee/android/MainActivity.java | 56 ++++++ .../app/src/main/res/layout/activity_main.xml | 39 +++++ .../app/src/main/res/menu/menu_main.xml | 6 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3418 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2206 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4842 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7718 bytes .../app/src/main/res/values-w820dp/dimens.xml | 6 + .../app/src/main/res/values/dimens.xml | 5 + .../app/src/main/res/values/strings.xml | 6 + .../app/src/main/res/values/styles.xml | 8 + wiigee-gui-android/build.gradle | 19 ++ wiigee-gui-android/gradle.properties | 18 ++ .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 49896 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + wiigee-gui-android/gradlew | 164 ++++++++++++++++++ wiigee-gui-android/gradlew.bat | 90 ++++++++++ wiigee-gui-android/settings.gradle | 1 + {wiigee-gui => wiigee-gui-swing}/build.xml | 0 .../lib/nblibraries.properties | 0 {wiigee-gui => wiigee-gui-swing}/manifest.mf | 0 .../nbproject/build-impl.xml | 0 .../nbproject/genfiles.properties | 0 .../nbproject/project.properties | 0 .../nbproject/project.xml | 0 .../src/img/WiiMote_2_pressed.png | Bin .../src/img/WiiMote_A_pressed.png | Bin .../src/img/WiiMote_B_pressed.png | Bin .../src/img/WiiMote_HOME_pressed.png | Bin .../src/img/WiiMote_released.gif | Bin .../src/img/WiiMote_released.png | Bin .../src/wiigeegui/Frontend.form | 0 .../src/wiigeegui/Frontend.java | 0 .../src/wiigeegui/GraphPanel.java | 0 .../src/wiigeegui/InfraredPanel.java | 0 .../src/wiigeegui/OrientationPanel.java | 0 .../src/wiigeegui/WiimotePanel.java | 0 .../src/wiigeegui/wiigeemain.java | 0 57 files changed, 734 insertions(+) create mode 100644 wiigee-gui-android/.gitignore create mode 100644 wiigee-gui-android/.idea/.name create mode 100644 wiigee-gui-android/.idea/compiler.xml create mode 100644 wiigee-gui-android/.idea/copyright/profiles_settings.xml create mode 100644 wiigee-gui-android/.idea/gradle.xml create mode 100644 wiigee-gui-android/.idea/misc.xml create mode 100644 wiigee-gui-android/.idea/modules.xml create mode 100644 wiigee-gui-android/.idea/runConfigurations.xml create mode 100644 wiigee-gui-android/.idea/vcs.xml create mode 100644 wiigee-gui-android/GesturePoc.iml create mode 100644 wiigee-gui-android/README create mode 100644 wiigee-gui-android/README~ create mode 100644 wiigee-gui-android/app/.gitignore create mode 100644 wiigee-gui-android/app/app.iml create mode 100644 wiigee-gui-android/app/build.gradle create mode 100644 wiigee-gui-android/app/libs/wiigee-lib.jar create mode 100644 wiigee-gui-android/app/libs/wiigee-plugin-android.jar create mode 100644 wiigee-gui-android/app/proguard-rules.pro create mode 100644 wiigee-gui-android/app/src/main/AndroidManifest.xml create mode 100644 wiigee-gui-android/app/src/main/java/org/wiigee/android/MainActivity.java create mode 100644 wiigee-gui-android/app/src/main/res/layout/activity_main.xml create mode 100644 wiigee-gui-android/app/src/main/res/menu/menu_main.xml create mode 100644 wiigee-gui-android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 wiigee-gui-android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 wiigee-gui-android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 wiigee-gui-android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 wiigee-gui-android/app/src/main/res/values-w820dp/dimens.xml create mode 100644 wiigee-gui-android/app/src/main/res/values/dimens.xml create mode 100644 wiigee-gui-android/app/src/main/res/values/strings.xml create mode 100644 wiigee-gui-android/app/src/main/res/values/styles.xml create mode 100644 wiigee-gui-android/build.gradle create mode 100644 wiigee-gui-android/gradle.properties create mode 100644 wiigee-gui-android/gradle/wrapper/gradle-wrapper.jar create mode 100644 wiigee-gui-android/gradle/wrapper/gradle-wrapper.properties create mode 100755 wiigee-gui-android/gradlew create mode 100644 wiigee-gui-android/gradlew.bat create mode 100644 wiigee-gui-android/settings.gradle rename {wiigee-gui => wiigee-gui-swing}/build.xml (100%) rename {wiigee-gui => wiigee-gui-swing}/lib/nblibraries.properties (100%) rename {wiigee-gui => wiigee-gui-swing}/manifest.mf (100%) rename {wiigee-gui => wiigee-gui-swing}/nbproject/build-impl.xml (100%) rename {wiigee-gui => wiigee-gui-swing}/nbproject/genfiles.properties (100%) rename {wiigee-gui => wiigee-gui-swing}/nbproject/project.properties (100%) rename {wiigee-gui => wiigee-gui-swing}/nbproject/project.xml (100%) rename {wiigee-gui => wiigee-gui-swing}/src/img/WiiMote_2_pressed.png (100%) rename {wiigee-gui => wiigee-gui-swing}/src/img/WiiMote_A_pressed.png (100%) rename {wiigee-gui => wiigee-gui-swing}/src/img/WiiMote_B_pressed.png (100%) rename {wiigee-gui => wiigee-gui-swing}/src/img/WiiMote_HOME_pressed.png (100%) rename {wiigee-gui => wiigee-gui-swing}/src/img/WiiMote_released.gif (100%) rename {wiigee-gui => wiigee-gui-swing}/src/img/WiiMote_released.png (100%) rename {wiigee-gui => wiigee-gui-swing}/src/wiigeegui/Frontend.form (100%) rename {wiigee-gui => wiigee-gui-swing}/src/wiigeegui/Frontend.java (100%) rename {wiigee-gui => wiigee-gui-swing}/src/wiigeegui/GraphPanel.java (100%) rename {wiigee-gui => wiigee-gui-swing}/src/wiigeegui/InfraredPanel.java (100%) rename {wiigee-gui => wiigee-gui-swing}/src/wiigeegui/OrientationPanel.java (100%) rename {wiigee-gui => wiigee-gui-swing}/src/wiigeegui/WiimotePanel.java (100%) rename {wiigee-gui => wiigee-gui-swing}/src/wiigeegui/wiigeemain.java (100%) diff --git a/wiigee-gui-android/.gitignore b/wiigee-gui-android/.gitignore new file mode 100644 index 0000000..9c4de58 --- /dev/null +++ b/wiigee-gui-android/.gitignore @@ -0,0 +1,7 @@ +.gradle +/local.properties +/.idea/workspace.xml +/.idea/libraries +.DS_Store +/build +/captures diff --git a/wiigee-gui-android/.idea/.name b/wiigee-gui-android/.idea/.name new file mode 100644 index 0000000..5ebc55e --- /dev/null +++ b/wiigee-gui-android/.idea/.name @@ -0,0 +1 @@ +GesturePoc \ No newline at end of file diff --git a/wiigee-gui-android/.idea/compiler.xml b/wiigee-gui-android/.idea/compiler.xml new file mode 100644 index 0000000..9a8b7e5 --- /dev/null +++ b/wiigee-gui-android/.idea/compiler.xml @@ -0,0 +1,22 @@ + + + + + \ No newline at end of file diff --git a/wiigee-gui-android/.idea/copyright/profiles_settings.xml b/wiigee-gui-android/.idea/copyright/profiles_settings.xml new file mode 100644 index 0000000..e7bedf3 --- /dev/null +++ b/wiigee-gui-android/.idea/copyright/profiles_settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/wiigee-gui-android/.idea/gradle.xml b/wiigee-gui-android/.idea/gradle.xml new file mode 100644 index 0000000..0833b17 --- /dev/null +++ b/wiigee-gui-android/.idea/gradle.xml @@ -0,0 +1,19 @@ + + + + + + \ No newline at end of file diff --git a/wiigee-gui-android/.idea/misc.xml b/wiigee-gui-android/.idea/misc.xml new file mode 100644 index 0000000..6a1e020 --- /dev/null +++ b/wiigee-gui-android/.idea/misc.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wiigee-gui-android/.idea/modules.xml b/wiigee-gui-android/.idea/modules.xml new file mode 100644 index 0000000..b190b47 --- /dev/null +++ b/wiigee-gui-android/.idea/modules.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/wiigee-gui-android/.idea/runConfigurations.xml b/wiigee-gui-android/.idea/runConfigurations.xml new file mode 100644 index 0000000..7f68460 --- /dev/null +++ b/wiigee-gui-android/.idea/runConfigurations.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/wiigee-gui-android/.idea/vcs.xml b/wiigee-gui-android/.idea/vcs.xml new file mode 100644 index 0000000..6564d52 --- /dev/null +++ b/wiigee-gui-android/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/wiigee-gui-android/GesturePoc.iml b/wiigee-gui-android/GesturePoc.iml new file mode 100644 index 0000000..046f82e --- /dev/null +++ b/wiigee-gui-android/GesturePoc.iml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wiigee-gui-android/README b/wiigee-gui-android/README new file mode 100644 index 0000000..668c90b --- /dev/null +++ b/wiigee-gui-android/README @@ -0,0 +1,3 @@ +This Android application uses the Gradle build system. This is not yet integrated with the Ant-based build system that the rest of wiigee uses. + +The Android GUI relies on having the most recent wiigee-lib and wiigee-plugin-android JARs in the app/libs directory. If you'd like to enhance these libraries and see them updated in the Android UI project, copy the JARs to app/libs after running "ant jar" in wiigee-lib and wiigee-plugin-android. diff --git a/wiigee-gui-android/README~ b/wiigee-gui-android/README~ new file mode 100644 index 0000000..e69de29 diff --git a/wiigee-gui-android/app/.gitignore b/wiigee-gui-android/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/wiigee-gui-android/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/wiigee-gui-android/app/app.iml b/wiigee-gui-android/app/app.iml new file mode 100644 index 0000000..762f8c5 --- /dev/null +++ b/wiigee-gui-android/app/app.iml @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wiigee-gui-android/app/build.gradle b/wiigee-gui-android/app/build.gradle new file mode 100644 index 0000000..44a712d --- /dev/null +++ b/wiigee-gui-android/app/build.gradle @@ -0,0 +1,25 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 23 + buildToolsVersion "22.0.1" + + defaultConfig { + applicationId "org.wiigee.android" + minSdkVersion 15 + targetSdkVersion 23 + versionCode 1 + versionName "1.0" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + compile fileTree(dir: 'libs', include: ['*.jar']) + compile 'com.android.support:appcompat-v7:23.0.0' +} diff --git a/wiigee-gui-android/app/libs/wiigee-lib.jar b/wiigee-gui-android/app/libs/wiigee-lib.jar new file mode 100644 index 0000000000000000000000000000000000000000..b7454cb5bd061af297b07e5eceb39e5ed9716cdc GIT binary patch literal 64479 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 L9b>3`58?p;#~oIn literal 0 HcmV?d00001 diff --git a/wiigee-gui-android/app/libs/wiigee-plugin-android.jar b/wiigee-gui-android/app/libs/wiigee-plugin-android.jar new file mode 100644 index 0000000000000000000000000000000000000000..cc41f01142d712a408145455c547e13f6820c196 GIT binary patch literal 33233 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 literal 0 HcmV?d00001 diff --git a/wiigee-gui-android/app/proguard-rules.pro b/wiigee-gui-android/app/proguard-rules.pro new file mode 100644 index 0000000..ff7412e --- /dev/null +++ b/wiigee-gui-android/app/proguard-rules.pro @@ -0,0 +1,17 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /home/katie/Android/Sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/wiigee-gui-android/app/src/main/AndroidManifest.xml b/wiigee-gui-android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..70f02bd --- /dev/null +++ b/wiigee-gui-android/app/src/main/AndroidManifest.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + diff --git a/wiigee-gui-android/app/src/main/java/org/wiigee/android/MainActivity.java b/wiigee-gui-android/app/src/main/java/org/wiigee/android/MainActivity.java new file mode 100644 index 0000000..85fa77d --- /dev/null +++ b/wiigee-gui-android/app/src/main/java/org/wiigee/android/MainActivity.java @@ -0,0 +1,56 @@ +package org.wiigee.android; + +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.view.Menu; +import android.view.MenuItem; +import android.widget.Button; +import android.widget.Toast; + +import org.wiigee.control.AndroidWiigee; +import org.wiigee.event.GestureEvent; +import org.wiigee.event.GestureListener; + +public class MainActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + AndroidWiigee androidWiigee = new AndroidWiigee(this); + androidWiigee.setTrainButton((Button) findViewById(R.id.buttonTrain)); + androidWiigee.setRecognitionButton((Button) findViewById(R.id.buttonRecognize)); + androidWiigee.setCloseGestureButton((Button) findViewById(R.id.buttonClose)); + + androidWiigee.addGestureListener(new GestureListener() { + @Override + public void gestureReceived(GestureEvent gestureEvent) { + Toast.makeText(MainActivity.this, "Gesture Detected! " + gestureEvent.getId() + + ", prob: " + gestureEvent.getProbability(), Toast.LENGTH_SHORT).show(); + } + }); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // Inflate the menu; this adds items to the action bar if it is present. + getMenuInflater().inflate(R.menu.menu_main, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // Handle action bar item clicks here. The action bar will + // automatically handle clicks on the Home/Up button, so long + // as you specify a parent activity in AndroidManifest.xml. + int id = item.getItemId(); + + //noinspection SimplifiableIfStatement + if (id == R.id.action_settings) { + return true; + } + + return super.onOptionsItemSelected(item); + } +} diff --git a/wiigee-gui-android/app/src/main/res/layout/activity_main.xml b/wiigee-gui-android/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..970518e --- /dev/null +++ b/wiigee-gui-android/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,39 @@ + + + + +