Descubra todas las funcionalidades de NeoMAD 4.10.3

Una API genérica única para gestionar todo

Con la API genérica suministrada por NeoMAD se requiere un código único para desarrollar sus aplicaciones móviles nativas gracias a un marco de desarrollo multi-plataformas. Para el código fuente, la gestión del ciclo de vida del interfaz usuario, se utiliza una API única para todos los equipamientos que desea tener en cuenta.

La API Genérica de NeoMAD cubre totalmente las funcionalidades siguientes:

Ciclo de vida

  • Gestión de la pila de pantallas
  • Gestión de los estados de la aplicación, (start, stop, pausa, resumen)
  • Event bus for reactive applications

Interface usuario

  • API unificada para describir los IHM
  • Declaración de los IHM por medio de un mecanismo de layouts
  • Posibilidad de customizar los componentes gráficos

Conectividad

  • HTTP and HTTPS connections
  • Synchronous and asynchronous requests management
  • Listener for handling download and upload requests progression

Parámetros

  • Connectivity statuses access
  • Device's states access (screen size, keyboard type, phone state...)
  • Preference manager

Multimedia

  • Audio and video players
  • Camera access for taking pictures or recording videos
  • Media gallery access
  • QRCode

Captores

  • Accelerometer data access
  • Gyroscope data access
  • Magnetometer data access

Sistema de ficheros

  • Device filesystem access
  • Data storage in files
  • XML and JSON parsers
  • Storage in SQLite database

Cartografía

  • Geolocation data access
  • Native mapping systems access
  • Route computation

OpenGL

  • OpenGL ES 1.0
  • OpenGL ES 1.1
  • OpenGL ES 2.0 (coming soon)

Notificaciones

  • Push notification management through a single API for all devices
  • Local notifications, reminders and alarms management
  • Toast management
  • Tiles management (Windows 8 and Windows Phone)

Internacionalización

  • Creación de binarios multi-idiomas que corren a cargo de la localización y la internacionalización

Aparatos conectados

  • Support for iBeacon technology (coming soon)
  • Support for NFC trough native libraries

Describa sus interfaces utilizadores en Java o en xml

NeoMAD dispone de un mecanismo de layout avanzado para definir interfaces usuario optimizadas para cada plataforma y para cada formato.

Elija la solución que más le conviene para describir sus interfaces usuario. NeoMAD le permite separar simplemente el UI del código fuente describiendo sus interfaces en ficheros separados xml.

xml_ui java_ui

NeoMAD se integra perfectamente en el IDE Eclipse.

A fin de comenzar a utilizar NeoMAD lo más rápidamente posible, le suministramos una versión de NeoMAD lista para su utilización, pre-preparada con Eclipse. Asimismo, usted puede conservar su marco de trabajo existente descargando por separado NeoMAD y su plugin para Eclipse.

El plugin NeoMAD para Eclipse ofrece también una función de depurador para las plataformas java. Coloque sus puntos de parada directamente en su código NeoMAD y pilote los depuradores Android, Java Me o BlackBerry desde Eclipse. También tiene la posibilidad de depurar las otras plataformas generando los proyectos nativos y abriéndolos en sus editores respectivos.

eclipse_debug_view

Si está acostumbrado a utilizar otro entorno de desarrollo: NeoMAD también es una herramienta de mando en línea y por lo tanto se integra fácilmente en los demás IDE del mercado.

Amplíe las funcionalidades de NeoMAD

NeoMAD le propone un mecanismo avanzado para ampliar sus funcionalidades. Puede embarcar en sus proyectos de códigos nativos, Java, (para Android, BlackberryOS y Java ME), C# (Windows Phone, Windows 8) y Objective-C (iOS), que se tratará por la cadena de compilación NeoMAD.

El siguiente ejemplo ilustra esta funcionalidad



    package com.neomades.specific;

    public class BrowserTask {
        public void openURL(String url) {
        }
    }

Declaración de la firma del código específico

A fin de poder acceder de manera nativa a los diferentes componentes de cada objetivo y de permitir a la cadena de compilación de NeoMAD recuperar las fuentes escritas en código nativo, basta con declarar en su proyecto una clase particular y definir los métodos que más adelante se han de implementar.

NeoMAD proporciona un asistente que permite generar automáticamente las implementaciones vacías correspondientes.

*El ejemplo que aquí presentamos permite cargar una url en el navegador nativo de cada plataforma. Esta función ya está disponible en NeoMAD y aquí solo se presenta para la demostración.


Implementación C#

El código siguiente corresponde a la implementación del método open URL() para las plataformas
Windows Phone y Windows 8.

                                
    using Microsoft.Phone.Tasks;
    using System;
    using System.Text;
    using java.lang;

    namespace com.neomades.specific {

      public class BrowserTask {

        public void openURL(String url) {
          WebBrowserTask task = new WebBrowserTask();
          task.Uri = new Uri(url);
          task.Show();
        }
      }
    }
                            

Implementación Objective-C

El código siguiente corresponde a la implementación del método open URL() para las plataformas iOS.

                                
    #import 

    @implementation com_neomades_specific_BrowserTask

    - (void) openURL___java_lang_String:(java_lang_String*)url {
        [[UIApplication sharedApplication] openURL:[[NSURL alloc] initWithString:url]];
    }

    @end
                            

Implementación Java

Implementación Java

El código siguiente corresponde a la implementación del método open URL() para las plataformas Android.

                                
    package com.neomades.specific;

    import com.neomades.app.Application;

    import android.content.Intent;
    import android.net.Uri;

    public class BrowserTask {

        public void openURL(String url) {
            Intent browserIntent = new Intent(Intent.ACTION_DEFAULT, Uri.parse(url));
            browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            Application.getCurrent().startActivity(browserIntent);
        }

    }
                            

Un potente mecanismo de condicionamiento y de clonaje

Cada proyecto NeoMAD es descrito por un fichero xml particular: el URS. Es este fichero URS el que permite definir los parámetros de la aplicación, (nombre, autor, número de versión, fuentes, permisos…).

Cada proyecto NeoMAD posee igualmente un fichero de constantes llamado Constants.java que permite modificar el comportamiento de su proyecto con respecto a la compilación o bien a la ejecución.

La combinación de estos dos ficheros ofrece una gran flexibilidad que de este modo permite crear binarios diferentes a partir de un mismo proyecto, (clonaje).


Fichero URS de descripción de proyecto

En este ejemplo definimos una aplicación cuyo nombre e identificación serán definidos en la compilación de los binarios.

                                
<?xml version="1.0"?>
<urs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:noNamespaceSchemaLocation="http://www.neomades.com/XSD/0.0.0/urs.xsd">
	<parameters>
		<mainclassname>HelloWorld</mainclassname>
		<applicationname>${APP_NAME}</applicationname>
		<vendor>Neomades</vendor>
		<description>HelloClonedWord application example.</description>
		<packagename>com.neomades.helloworld</packagename>
		<applicationidentifier>com.neomades.${APP_ID}</applicationidentifier>

        <version>1.0.0</version>

		<srcpath>src</srcpath>
		<outputpath>out</outputpath>
	</parameters>

    <strings path="res/strings.csv" />
</urs>

                            

Fichero de constantes Constants.java

En este fichero de constantes, declaramos variables que serán interpretadas en la compilación de los binarios en función de los parámetros de compilación.

En nuestro caso, estas variables permiten modificar el color de fondo de nuestra aplicación así como su nombre y su identificador.

Entonces, basta con especificar los buenos parámetros en la compilación para crear 3 binarios diferentes a partir de un único proyecto.

                                
package com.neomades.helloworld;

import com.neomades.mad.TargetInfo;

public class Constants implements TargetInfo {

	/*************************************************************************/
	/**           Let's define some resources for our application            */
	/*************************************************************************/

	/* Application background color **/
	public static int MAIN_SCREEN_BACKGROUND_COLOR;

	/* Application identifier **/
	public static String APP_ID;

	/* Application name **/
	public static String APP_NAME;

	/*************************************************************************/
	/**    Let's compute the resource's values given command line defines    */
	/*************************************************************************/

	/* When specified with -d option, sets the application "red" or "green
	 * Default is "blue" **/
	public static boolean RED = false;
	public static boolean GREEN = false;

	/* The static block allows us to compute values of static variables **/
	static{
		if (GREEN){
			MAIN_SCREEN_BACKGROUND_COLOR = 0x3c7b5c;
			RES_FOLDER = "green";
			APP_ID = "hellogreenworld";
			APP_NAME = "HelloGreenWorld";
		}
		else if (RED){
			MAIN_SCREEN_BACKGROUND_COLOR = 0xb90000;
			RES_FOLDER = "red";
			APP_ID = "helloredworld";
			APP_NAME = "HelloRedWorld";
		}
		else{
			MAIN_SCREEN_BACKGROUND_COLOR = 0x146da7;
			RES_FOLDER = "blue";
			APP_ID = "helloblueworld";
			APP_NAME = "HelloBlueWorld";
		}
	}

	/*************************************************************************/
}