Découvrez toutes les fonctionnalités de NeoMAD 4.6.4

Une API unique pour tout gérer

Avec l'API Générique fournie par NeoMAD, un code unique suffit à développer vos applications mobiles natives grâce à une approche cross-plateformes. Que ce soit pour le code métier, la gestion du cycle de vie ou l'interface utilisateur, vous n'utilisez qu'une seule API pour tous les équipements que vous souhaitez adresser.

L'API Générique de NeoMAD couvre notamment les fonctionnalités suivantes :

Cycle de vie

  • Gestion de la navigation dans la pile d'écrans
  • Gestion des états de l'application (start, stop, pause, resume)
  • Bus d'événement pour des applications réactives

Interface Utilisateur

  • Une seule API pour la déclaration des IHM de tous les appareils
  • Mécanisme de layouts pour permettre une adaptation à tous les types d'écrans
  • Possibilité de surcharger les composants graphiques

Connectivité

  • Connexions HTTP et HTTPS
  • Gestion des requêtes synchrones ou asynchrones
  • Listener de progression des requêtes montantes et descendantes

Paramètres

  • Accès aux états des connectivités
  • Accès aux informations de l'appareil (taille d'écran, type de clavier, fonctions de téléphonie...)
  • Gestionnaire de préférences

Multimédia

  • Lecteurs audio et vidéo
  • Accès à la caméra pour prise de photos et de vidéos
  • Accès à la galerie media
  • QRCode

Capteurs

  • Accès aux données de l'accéléromètre
  • Accès aux données du gyroscope
  • Accès aux données du magnétomètre

Système de fichiers

  • Accès au système de fichiers des appareils
  • Stockage des données dans des fichiers
  • Parsers XML et JSON
  • Stockage en base de données SQLite

Cartographie

  • Accès aux données de géolocalisation
  • Accès aux systèmes de cartographie natifs
  • Calculs d'itinéraires

OpenGL

  • OpenGL ES 1.0
  • OpenGL ES 1.1
  • OpenGL ES 2.0 (prochainement)

Notifications

  • Gestion des notifications push via une API unique pour tous les appareils
  • Gestion des notifications locales, des rappels et des alarmes
  • Gestion des Toasts
  • Gestion des tuiles (Windows 8 et Windows Phone)

Internationalisation

  • Création de binaires multi-langues prenant en charge la localisation et l'internationalisation

Appareils connectés

  • Prise en charge de la technologie iBeacon
  • Prise en charge de la technologie NFC via des librairies natives

Décrivez vos interfaces utilisateurs en Java ou en xml

NeoMAD dispose d'un mécanisme de layout avancé pour définir des interfaces utilisateurs optimisées pour chaque plateforme et pour chaque format.

Choisissez la solution qui vous convient le mieux pour décrire vos interfaces utilisateur. NeoMAD vous permet de séparer simplement l'UI du code métier en décrivant vos interfaces dans des fichiers xml séparés.

xml_ui java_ui

NeoMAD s'intègre parfaitement dans l'IDE Eclipse

Afin de commencer à utiliser NeoMAD le plus rapidement possible, nous vous fournissons une version de NeoMAD prête à l'emploi, pré packagée avec Eclipse. Vous pouvez également conserver votre environnement de travail existant en téléchargeant séparément NeoMAD et son plugin pour Eclipse.

Le plugin NeoMAD pour Eclipse offre également une fonction de débug pour les plateformes Java. Placez vos points d'arrêts directement dans votre code NeoMAD et pilotez les débuggers Android, Java ME ou BlackBerry depuis Eclipse. Vous avez également la possibilité de débugger pour les autres plateformes en générant les projets natifs et en les ouvrant dans leurs éditeurs respectifs.

eclipse_debug_view

Si vous avez l'habitude d'utiliser un autre environnement de développement : NeoMAD est aussi un outil en ligne de commande et s'intègre donc facilement avec les autres IDE du marché.

Étendez les fonctionnalités de NeoMAD

NeoMAD vous propose un mécanisme avancé pour étendre ses fonctionnalités. Vous pouvez embarquer dans vos projets du code natif Java (pour Android, BlackBerryOS et Java ME), C# (Windows Phone, Windows 8) et Objective-C (iOS) qui sera traité par la chaine de compilation de NeoMAD.

Grâce à ce mécanisme, vous pouvez accéder à des fonctionnalités spécifiques à chaque plateforme, embarquer du code qui a déjà été écrit pour une cible particulière ou encore accéder à des composants qui ne sont pas encore disponibles dans NeoMAD.

L'exemple suivant illustre cette fonctionnalité.



    package com.neomades.specific;

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

Déclaration de la signature du code spécifique

Afin de pouvoir accéder de manière native aux différents composants de chaque cible et afin de permettre à la chaîne de compilation de NeoMAD de récupérer les sources écrites en code natif, il suffit de déclarer dans son projet une classe particulière et de définir les méthodes à implémenter par la suite.

NeoMAD fournit un assistant permettant de générer automatiquement les implémentations vides correspondantes.

L'exemple fournit ici permet de charger une url dans le navigateur natif de chaque cible. Cette fonction est déjà disponible dans NeoMAD et est donc fournie ici uniquement pour la démonstration.


Implémentation C#

Le code suivant correspond à l’implémentation de la méthode openURL() pour les cibles Windows Phone et 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();
        }
      }
    }
                            

Implémentation Objective-C

Le code suivant correspond à l’implémentation de la méthode openURL() pour les cibles iOS

                                
    #import 

    @implementation com_neomades_specific_BrowserTask

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

    @end
                            

Implémentation Java

Le code suivant correspond à l’implémentation de la méthode openURL() pour les cibles 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 puissant mécanisme de conditionnement et de clonage

Chaque projet NeoMAD est décrit par un fichier xml particulier : l'URS. C'est ce fichier URS qui permet de définir les paramètres de l'application (Nom, auteur, numéro de version, ressources, permissions, ...).

Chaque projet NeoMAD possède également un fichier de constantes, appelé Constants.java et permettant de modifier le comportement de votre projet à la compilation ou bien à l'exécution.

La combinaison de ces deux fichiers offre une très grande souplesse permettant ainsi de créer des binaires différents à partir d'un même projet (clonage).

L'exemple suivant, dont vous trouverez le code dans les exemples fournis avec NeoMAD, illustre ce mécanisme de conditionnement.


Fichier URS de description du projet

Dans cette exemple, nous définissons une application dont le nom et l’identifiant seront définis à la compilation des binaires.

                                
<?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>

                            

Fichier de constantes Constants.java

Dans ce fichier de constantes, nous déclarons des variables qui seront interprétées à la compilation des binaires en fonction des paramètres de compilation.
Ces variables permettent dans notre cas, de modifier la couleur de fond de notre application ainsi que son nom et son identifiant.

Il suffit alors de spécifier les bons paramètres à la compilation pour créer 3 binaires différents à partir d'un seul projet.

                                
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";
		}
	}

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