diff --git a/.gitignore b/.gitignore index 3847421..ab225d4 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,7 @@ local.properties .classpath .project project.properties +libs/ # Proguard folder generated by Eclipse proguard/ diff --git a/AndroidManifest.xml b/AndroidManifest.xml index b6f7c02..aeb2447 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -14,6 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. --> + diff --git a/assets/data/fonts/d-puntillas-B-to-tiptoe.ttf b/assets/data/fonts/d-puntillas-B-to-tiptoe.ttf new file mode 100644 index 0000000..d56f73d Binary files /dev/null and b/assets/data/fonts/d-puntillas-B-to-tiptoe.ttf differ diff --git a/assets/data/gfx/gui/Anonymous_Button_Green.png b/assets/data/gfx/gui/Anonymous_Button_Green.png new file mode 100644 index 0000000..9a0d921 Binary files /dev/null and b/assets/data/gfx/gui/Anonymous_Button_Green.png differ diff --git a/assets/data/gfx/gui/Anonymous_Button_Red.png b/assets/data/gfx/gui/Anonymous_Button_Red.png new file mode 100644 index 0000000..0e728ad Binary files /dev/null and b/assets/data/gfx/gui/Anonymous_Button_Red.png differ diff --git a/assets/data/gfx/gui/Anonymous_Pill_Button_Blue.png b/assets/data/gfx/gui/Anonymous_Pill_Button_Blue.png new file mode 100644 index 0000000..0cde398 Binary files /dev/null and b/assets/data/gfx/gui/Anonymous_Pill_Button_Blue.png differ diff --git a/assets/data/gfx/gui/Anonymous_Pill_Button_Cyan.png b/assets/data/gfx/gui/Anonymous_Pill_Button_Cyan.png new file mode 100644 index 0000000..4155ecf Binary files /dev/null and b/assets/data/gfx/gui/Anonymous_Pill_Button_Cyan.png differ diff --git a/assets/data/gfx/gui/Anonymous_Pill_Button_Yellow.png b/assets/data/gfx/gui/Anonymous_Pill_Button_Yellow.png new file mode 100644 index 0000000..05a38d4 Binary files /dev/null and b/assets/data/gfx/gui/Anonymous_Pill_Button_Yellow.png differ diff --git a/assets/data/gfx/gui/OUYA_O.png b/assets/data/gfx/gui/OUYA_O.png new file mode 100644 index 0000000..ee2f890 Binary files /dev/null and b/assets/data/gfx/gui/OUYA_O.png differ diff --git a/assets/data/gfx/gui/PBCrichton_Flat_Button.png b/assets/data/gfx/gui/PBCrichton_Flat_Button.png new file mode 100644 index 0000000..263c93e Binary files /dev/null and b/assets/data/gfx/gui/PBCrichton_Flat_Button.png differ diff --git a/assets/data/gfx/gui/orange_glowy_button.png b/assets/data/gfx/gui/orange_glowy_button.png new file mode 100644 index 0000000..50454df Binary files /dev/null and b/assets/data/gfx/gui/orange_glowy_button.png differ diff --git a/assets/data/gfx/textures/tile_aqua.png b/assets/data/gfx/textures/tile_aqua.png new file mode 100644 index 0000000..8e8d14f Binary files /dev/null and b/assets/data/gfx/textures/tile_aqua.png differ diff --git a/assets/shaders/bckg/bckg.frag b/assets/shaders/bckg/bckg.frag new file mode 100644 index 0000000..5ecaf92 --- /dev/null +++ b/assets/shaders/bckg/bckg.frag @@ -0,0 +1,12 @@ +#ifdef GL_ES +precision mediump float; +#endif + +uniform sampler2D u_texture; +uniform vec2 u_scaling; + +varying vec2 v_texCoords; + +void main(){ + gl_FragColor = texture2D(u_texture, v_texCoords * u_scaling); +} \ No newline at end of file diff --git a/assets/shaders/bckg/bckg.vert b/assets/shaders/bckg/bckg.vert new file mode 100644 index 0000000..191d740 --- /dev/null +++ b/assets/shaders/bckg/bckg.vert @@ -0,0 +1,11 @@ +uniform mat4 u_projTrans; + +attribute vec4 a_position; +attribute vec2 a_texCoord0; + +varying vec2 v_texCoords; + +void main(){ + v_texCoords = a_texCoord0; + gl_Position = u_projTrans * a_position; +} \ No newline at end of file diff --git a/project.properties b/project.properties index a5578ba..57ada93 100644 --- a/project.properties +++ b/project.properties @@ -9,3 +9,4 @@ # Project target. target=android-19 +android.library.reference.1=../../../../../Documents/OpenCV-2.4.8-android-sdk/sdk/java diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml new file mode 100644 index 0000000..a6b32aa --- /dev/null +++ b/res/values-es/strings.xml @@ -0,0 +1,21 @@ + + + + NxtAR + No se pudo inicializar OpenCV + OpenCV inicializado con exito + \ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index 3766e58..a7c755b 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -16,4 +16,6 @@ --> NxtAR + Failed to initialize OpenCV + OpenCV initialized successfully \ No newline at end of file diff --git a/src/ve/ucv/ciens/ccg/nxtar/MainActivity.java b/src/ve/ucv/ciens/ccg/nxtar/MainActivity.java index bf00df6..b688200 100644 --- a/src/ve/ucv/ciens/ccg/nxtar/MainActivity.java +++ b/src/ve/ucv/ciens/ccg/nxtar/MainActivity.java @@ -15,9 +15,16 @@ */ package ve.ucv.ciens.ccg.nxtar; +import org.opencv.android.BaseLoaderCallback; +import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener; +import org.opencv.android.LoaderCallbackInterface; +import org.opencv.android.OpenCVLoader; +import org.opencv.core.Mat; + import ve.ucv.ciens.ccg.nxtar.interfaces.MulticastEnabler; import ve.ucv.ciens.ccg.nxtar.interfaces.Toaster; import android.content.Context; +import android.content.pm.ActivityInfo; import android.net.wifi.WifiManager; import android.net.wifi.WifiManager.MulticastLock; import android.os.Bundle; @@ -27,8 +34,9 @@ import android.widget.Toast; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.backends.android.AndroidApplication; import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration; +import com.badlogic.gdx.controllers.mappings.Ouya; -public class MainActivity extends AndroidApplication implements Toaster, MulticastEnabler{ +public class MainActivity extends AndroidApplication implements Toaster, MulticastEnabler, CvCameraViewListener{ private static final String TAG = "NXTAR_ANDROID_MAIN"; private static final String CLASS_NAME = MainActivity.class.getSimpleName(); @@ -36,18 +44,53 @@ public class MainActivity extends AndroidApplication implements Toaster, Multica private MulticastLock multicastLock; private Handler uiHandler; private Context uiContext; + private boolean ocvOn; + private BaseLoaderCallback loaderCallback; + + /*static{ + if (!OpenCVLoader.initDebug()){ + Gdx.app.exit(); + } + }*/ @Override - public void onCreate(Bundle savedInstanceState) { + public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); + ocvOn = false; + + if(!Ouya.runningOnOuya){ + setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + }else{ + setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); + } + uiHandler = new Handler(); uiContext = this; wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE); AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration(); - cfg.useGL20 = false; + cfg.useGL20 = true; + cfg.useAccelerometer = false; + cfg.useCompass = false; + cfg.useWakelock = true; + loaderCallback = new BaseLoaderCallback(this){ + @Override + public void onManagerConnected(int status){ + switch(status){ + case LoaderCallbackInterface.SUCCESS: + ocvOn = true; + break; + default: + Toast.makeText(uiContext, R.string.ocv_failed, Toast.LENGTH_LONG).show(); + Gdx.app.exit(); + break; + } + } + }; + + OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_7, this, loaderCallback); initialize(new NxtARCore(this), cfg); } @@ -55,20 +98,20 @@ public class MainActivity extends AndroidApplication implements Toaster, Multica // Toaster interface methods. // //////////////////////////////// @Override - public void showShortToast(final String msg) { - uiHandler.post(new Runnable() { + public void showShortToast(final String msg){ + uiHandler.post(new Runnable(){ @Override - public void run() { + public void run(){ Toast.makeText(uiContext, msg, Toast.LENGTH_SHORT).show(); } }); } @Override - public void showLongToast(final String msg) { - uiHandler.post(new Runnable() { + public void showLongToast(final String msg){ + uiHandler.post(new Runnable(){ @Override - public void run() { + public void run(){ Toast.makeText(uiContext, msg, Toast.LENGTH_LONG).show(); } }); @@ -79,18 +122,41 @@ public class MainActivity extends AndroidApplication implements Toaster, Multica ///////////////////////////////////////// @Override public void enableMulticast(){ - Gdx.app.debug(TAG, CLASS_NAME + ".enableMulticast() :: Requesting multicast lock."); + Gdx.app.log(TAG, CLASS_NAME + ".enableMulticast() :: Requesting multicast lock."); multicastLock = wifiManager.createMulticastLock(TAG); multicastLock.setReferenceCounted(true); multicastLock.acquire(); } @Override - public void disableMulticast() { - Gdx.app.debug(TAG, CLASS_NAME + ".disableMulticast() :: Releasing multicast lock."); + public void disableMulticast(){ + Gdx.app.log(TAG, CLASS_NAME + ".disableMulticast() :: Releasing multicast lock."); if(multicastLock != null){ multicastLock.release(); multicastLock = null; } } + + ///////////////////////////////////////////// + // CvCameraViewListener interface methods. // + ///////////////////////////////////////////// + /** + *

This method does nothing. It is here because it must be implemented in order to use OpenCV.

+ */ + @Override + public void onCameraViewStarted(int width, int height){ } + + /** + *

This method does nothing. It is here because it must be implemented in order to use OpenCV.

+ */ + @Override + public void onCameraViewStopped(){ } + + /** + *

This method does nothing. It is here because it must be implemented in order to use OpenCV.

+ */ + @Override + public Mat onCameraFrame(Mat inputFrame){ + return null; + } } \ No newline at end of file