Libellés
mercredi 14 avril 2010
What is WAP Push?
A WAP Push is an SMS message which contains a link to a WAP page. When a compatible handset receives a WAP Push message, it allows the user to access that WAP content.
Usefull Links :
http://developer.openwave.com/docs/WAP_Push_1201.pdf
http://developer.openwave.com/docs/wappush_vs_sms.pdf
http://www.visualtron.com/
http://www.winplc.com/solutions/wap-push.aspx
PHP Class for WAP PUSH: http://www.phpclasses.org/browse/package/1971.html
Create WAP Push in java:
http://www.ericsson.com/mobilityworld/sub/open/technologies/open_development_tips/tools/wap_push_sdk
lancer automatiquement MIDlet, Utiliser le Push Registry.
Si vous voulez lancer automatiquement MIDlet, vous pouvez utiliser le Push Registry.
Comment faire?
La classe PushRegistry soutient un "push" modèle de distribution de contenu. Permettre à un MIDlet pour lancer en réponse à une connexion entrante ou à une heure programmée fait ensemble de nouvelles classes de services possible.
Spécification d'une entrée PushRegistry nécessite quatre éléments:
* Le MIDlet être lancé, spécifié à l'aide de l'attribut MIDlet-
* Si la suite de MIDlets est signé, une demande autorisations, en utilisant l'attribut MIDlet-autorisations. La demande doit comprendre au moins la méthode javax.microedition.io.PushRegistry.
* Une connexion entrante URL, requis par le Connector.open () méthode.
* Un filtre pour les connexions entrantes. Le format du filtre est spécifique au protocole, mais le filtre "*" correspond à toute chaîne, et "?" correspond à tout caractère unique.
Une entrée PushRegistry peut être spécifiée soit dans une forme statique ou dynamique.
Une entrée statique PushRegistry est spécifié dans le descripteur d'application Java (JAD), le fichier manifeste, ou les deux. Le MIDlet, une fois installé, toujours répondre à la connexion spécifiée entrants. Ajouter le MIDlet, Push registre, et autorisations attribue à la JAD ou manifeste, comme dans cet exemple JAD:
MIDlet-1: CalPushHandler
MIDlet-Permissions: javax.microedition.io.PushRegistry,
javax.microedition.io.Connector.socket
MIDlet-Push-1: socket: / /: 5012, CalPushHandler, *
Ces paramètres seront la cause CalPushHandler MIDlet de lancer en réponse à une demande de connexion entrante sur le port 5012.
Une entrée dynamique PushRegistry est bien le même que une entrée statique sauf que vous utilisez le PushRegistry.registerConnection () pour spécifier le Push Entrée au lieu d'utiliser le MIDlet-Push-
MIDlet-1: CalPushHandler
MIDlet-Permissions: javax.microedition.io.PushRegistry,
javax.microedition.io.Connector.socket
Le code source MIDlet sont les suivantes:
...
javax.microedtion.io.PushRegistry d'importation;
...
String connURL = "socket: / /: 5012";
MIDletStr String = "CalPushHandler";
FilterStr String = "*";
try (
PushRegistry.registerConnection (connURL,
MIDletStr, FilterStr);
) Catch (ClassNotFoundException CNF) (
...
) Catch (IOException ioe) (
...
)
...
Utilisation des alarmes pour lancer MIDlets
Le PushRegistry.registerAlarm () méthode présente un MIDlet pour lancer à une heure programmée. Il est proche de UNIX à (1) l'installation. La méthode nécessite un MIDlet dans la série actuelle de lancer, avec un temps. Spécifiez le MIDlet comme une chaîne et l'époque comme un java.util.Date. Un échantillon suit.
Dans la JAD ou fichier manifeste, insérer:
MIDlet-1: AlarmMIDlet
MIDlet-Permissions: javax.microedition.io.PushRegistr
Dans le code source MIDlet comprennent:
...
javax.microedtion.io.PushRegistry d'importation;
...
prevalarm long;
MIDletname String = "AlarmMIDlet";
nexttime Date = java.util.Date nouvelle () + 60000;
prevalarm = PushRegistry.registerAlarm (MIDletname, nexttime);
...
La spécification MIDP 2.0 limite le nombre d'alarmes par MIDlet dans une suite à un.
Notez que la spécification n'exige pas mises en œuvre pour soutenir ces caractéristiques PushRegistry. S'ils ne sont pas pris en charge, une exception sera levée ConnectionNotFoundException.
Un exemple
La suite de MIDlets échantillon illustre l'utilisation d'une entrée statique PushRegistry et du PushRegistry.registerAlarm () méthode. Notez que la suite de MIDlets ne comprend pas les composants de l'interface.
La suite de MIDlets contient deux MIDlets et une autre classe. Le PushMIDlet prévoit un délai de journée (TSD) service (voir: Internet Engineering Task Force RFC 867) en utilisant la classe DayTimeServer. DayTimeServer implémente l'interface Runnable, l'exécution du service TSD dans un thread séparé. DayTimeServer ouvre la connexion au serveur, accepte la connexion entrante (l'événement qui a initié le lancement MIDlet en premier lieu), répond au client avec l'heure actuelle comme une chaîne, ferme les connexions, et des sorties. Dans l'ensemble, pas très excitant, mais indicatif et extensible.
Le PushMIDlet enregistre également la AlarmMIDlet d'exécution 60 secondes après la PushMIDlet est lancé. Le AlarmMIDlet simplement re-soi calendriers à l'aide PushRegistry.registerAlarm (). Le résultat est le lancement récurrent de la MIDlet, semblable à la cron UNIX (1M) installation. Le AlarmMIDlet peut être facilement étendu pour inclure des activités plus intéressantes à être exécutés périodiquement.
Conclusion
Les deux nouveaux mécanismes de lancement de MIDlet que le MIDP 2.0 classe PuhRegistry prévoit de rendre possible la création de services plus riches en contenu. Pour plus d'informations sur le bouton enregistrer, voir l'article Le Push Registry MIDP 2.0
Use Push Registry for automatically Launch a MIDlet
If you want to launch MIDlet automatically, you can use Push Registry.
How to do ?
The PushRegistry class supports a "push" model of content distribution. Enabling a MIDlet to launch in response to an incoming connection or at a scheduled time makes whole new classes of services possible.
Specifying a PushRegistry entry requires four items:
* The MIDlet to be launched, specified using the MIDlet-
* If the MIDlet suite is signed, a Permissions request, using the MIDlet-Permissions attribute. The request must include at least the javax.microedition.io.PushRegistry method.
* An inbound connection URL, required by the Connector.open() method.
* A filter for inbound connections. The format of the filter is protocol-specific, but the filter "*" matches any string, and "?" matches any single character.
A PushRegistry entry can be specified in either a static or dynamic form.
A static PushRegistry entry is specified in the Java Application Descriptor (JAD) file, the manifest file, or both. The MIDlet, once installed, will always respond to the specified incoming connection. Add the MIDlet, Push Registry, and Permissions attributes to the JAD or manifest, as in this example JAD file:
MIDlet-1 : CalPushHandler
MIDlet-Permissions : javax.microedition.io.PushRegistry,
javax.microedition.io.Connector.socket
MIDlet-Push-1 : socket://:5012, CalPushHandler, *
These settings will cause the MIDlet CalPushHandler to launch in response to an incoming connection request on port 5012.
A dynamic PushRegistry entry is much the same as a static entry except that you use the PushRegistry.registerConnection() method to specify the Push Entry instead of using the MIDlet-Push-
MIDlet-1 : CalPushHandler
MIDlet-Permissions : javax.microedition.io.PushRegistry,
javax.microedition.io.Connector.socket
The MIDlet source code would include:
...
import javax.microedtion.io.PushRegistry;
...
String connURL = "socket://:5012";
String MIDletStr = "CalPushHandler";
String FilterStr = "*";
try {
PushRegistry.registerConnection(connURL,
MIDletStr, FilterStr);
} catch ( ClassNotFoundException cnf ) {
...
} catch ( IOException ioe ) {
...
}
...
Using Alarms to Launch MIDlets
The PushRegistry.registerAlarm() method sets up a MIDlet to launch at a scheduled time. It's similar to the UNIX at(1) facility. The method requires a MIDlet within the current suite to launch, along with a time. Specify the MIDlet as a String and the time as a java.util.Date. A sample follows.
In the JAD or manifest file, insert:
MIDlet-1 : AlarmMIDlet
MIDlet-Permissions : javax.microedition.io.PushRegistr
In the MIDlet source code include:
...
import javax.microedtion.io.PushRegistry;
...
long prevalarm;
String MIDletname = "AlarmMIDlet";
Date nexttime = new java.util.Date() + 60000;
prevalarm = PushRegistry.registerAlarm( MIDletname, nexttime );
...
The MIDP 2.0 specification limits the number of alarms per MIDlet in a suite to one.
Note that the spec doesn't require implementations to support these PushRegistry features. If they're not supported, a ConnectionNotFoundException exception will be thrown.
An Example
The sample MIDlet suite illustrates use of a static PushRegistry entry and of the PushRegistry.registerAlarm() method. Note that the MIDlet suite does not include any UI components.
The MIDlet suite contains two MIDlets and one other class. The PushMIDlet provides a time-of-day (TOD) service (see: Internet Engineering Task Force RFC 867) using the DayTimeServer class. DayTimeServer implements the Runnable interface, executing the TOD service in a separate thread. DayTimeServer opens the server connection, accepts the incoming connection (the event that initiated the MIDlet launch in the first place), responds to the client with the current time as a string, closes the connections, and exits. All in all, not very exciting, but illustrative and extensible.
The PushMIDlet also registers the AlarmMIDlet for execution 60 seconds after the PushMIDlet is launched. The AlarmMIDlet merely re-schedules itself using PushRegistry.registerAlarm(). The result is recurring launch of the MIDlet, similar to the UNIX cron(1M) facility. The AlarmMIDlet can easily be extended to include more interesting activities to be executed periodically.
Conclusion
The two new MIDlet-launching mechanisms that the MIDP 2.0 PuhRegistry class provides make possible the creation of more content-rich services.
Retrieving a SonyEricsson IMEI
The following command retrieves the IMEI (International Mobile Equipment Identity) number from :
Sony Ericsson mobile phones: System.getProperty("com.sonyericsson.imei") (from the SE MIDP Developer Guide)
Nokia mobile phones: System.getProperty("com.nokia.mid.imei")
Motorola (A338): System.getProperty("phone.imei")
Siemens: System.getProperty("com.siemens.IMEI")
vendredi 5 mars 2010
COMBINER LA PUISSANCE DE LWUIT DESIGNER et CELLE DU VISUAL MOBILE DESIGNER DE NETBEANS
Vous pourrez vous même trouver un tutoriel bien fait sur LWUIT dans le site de SUN, l'article est titré : "The Lightweight User Interface Toolkit (LWUIT): An Introduction".
POSONS LE DECOR
Comme vous pouvez le voir sur le dessin du dessus, Visual Mobile Designer vous facilite la gestion des flux et des affichages de votre application ainsi que le code des éléments actifs. Tout ceci en générant du code pour vous. Sauf que les graphisme utilisent : import javax.microedition.lcdui.*; ... C'est pas jolie - jolie à voir.
LWUIT quand à lui vous créer une UI nettement plus belle à voir et riche en possibilités ... sauf que ce sera à vous de codé l'application javaME pour utiliser une ressource générée par LWUIT ... c'est bien mais le programmeur c'est toujours un gros parresseux donc... QUE FAIRE POUR UTILISER SES DEUX FONCTIONNALITEES EN MEME TEMPS, ... sachant que le code généré par le visual mobile designer de netbeans n'est pas retouchable dans l'outils lui même ???
COMMENCONS
1) Dans le repertoire "util" de votre décompression LWUIT se trouve "ResourceEdit.exe" Lancer cet outils et créez votre ressource LWUIT. C'est relativement simple, vou pouvez y arriver avec ou sans tutoriel. Ne vous préoccupez pas de l'aspect code de votre application, cet outils de LWUIT ne gère que le design donc concntrez vous sur le DESIGN. Si vous avez beoin d'un tuto malgrés tout alors consultez l'article de SUN mentionné plus haut. Pour notre exemple voici notre ressource nommé: gsk.res
2) Créez votre application javaME en utilisant Visual Mobile Designer de Netbeans
Concevez normalement le code de votre application. dans l'exemple notre application est très simplifiée. Au démarrage nous nous retrouvons devant un formulaire qui possède un menu à 3 item. l'un des item ferme l'application, voilà c'est tout mais suffisant pour voir les retouches qu'il faudra par la suite faire pour intégrer dans cette application notre design conçu avec lwuit designer.
3) Créer une nouvelle classe principale dans le repertoire de votre application et copier tout le code généré par le VMD à l’intérieur de cette nouvelle classe. Corriger les erreurs de nommage sur la nouvelle classe, sur son constructeur et enlevez les implements.
4) Notre travail consistera principalement à traquer les erreurs sur le code pour l’unifier avec le design conçu dans lwuit designer.
è Remplacer les importations (pas de lcdui dans les import) voici les import les plus necessaires :
import javax.microedition.midlet.*;
import com.sun.lwuit.Form;
import com.sun.lwuit.Command;
import com.sun.lwuit.events.ActionEvent;
import com.sun.lwuit.Display;
import com.sun.lwuit.plaf.UIManager;
import com.sun.lwuit.util.Resources;
import java.io.IOException;
è Dans la methode startApp() ajouter au debut ce code:
try {
Display.init(this);
Resources r = Resources.open("/gsk.res");
UIManager.getInstance().setThemeProps(r.getTheme("gsk"));
//gsk c’est le nom que vous avez donné au theme dans le fichier .res
} catch (IOException ex) {
ex.printStackTrace();
}
è Supprimer les methodes switchDisplay et getDisplay ou les mettre en commentaire
( /* */ )
è Ajoutez dans le code des methodes «get » le bout de code tel que mentionné en dessous :
public Command getScreenCommand1() {
if (screenCommand1 == null) {
screenCommand1 = new Command("Screen", 0)
{
public void actionPerformed(ActionEvent evt) { // CODE A INSRER }
};
}
return screenCommand1;
}
-> Regarder la methode commandAction() Il ya là les codes d’action pour chaque composant actif dans notre formulaire. Copier ces codes et insérer les dans les methodes actionPerformed() des methodes « get » correspondantes pour chacun des composants actifs du formulaire.
-> Dans la methode startMIDlet() remplacer le code par : getForm().show();
-> Corriger les petites erreurs de syntaxes restantes, s’il y’en a et executer votre application.
dimanche 27 décembre 2009
NetBeans 6.8 Java FX
L'edition de javaFX s'améliore considérablement dans NetBeans 6.8 (comparer à NetBeans 6.7 notamment:
1. renommage (refactoring) des fonctions, classes, etc fonctionne comme en Java
2. le déplacement de classes entre les paquets de travaux (références / importations sont mis à jour) - également par simple glisser-déposer
3. trouver des usages / Remplacement des méthodes dans des projets open / projet de travaux en cours
4. Quick Fix pour par exemple œuvres importations (alt + Enter)
5. Ctrl + cliquez sur la navigation entre les catégories d'œuvres
6. Ctrl + O (aller au type) "recherche en texte intégral dans les types« œuvres
7. œuvres en format
8. "fixer les importations" œuvres
9. Nouvel écran de démarrage et les icônes des fichiers dans le projet :-) onglet
Un plugin est disponible en téléchargement a travers l'interface Netbean
(NetBeans Update Center): C'est le JavaFX Composer .
NetBeans 6.8 Java editor FX a été grandement améliorée, en le comparant avec NetBeans 6.7. Les ajouts apportées améliorent de façon significative la productivité. Ne manque que les tables, des arbres et des composants plus sophistiqués.
La grande question : C'est pour quand le concepteur visuel javaFX ? vivement la suite.
Netbeans 6.8 intègre un support pour Symfony. Symfony est un Framework utilisé par de nombreux developpeurs PHP. Un plus qui ne se refusera pas.
- Auto-complétion dans les vues
- Raccourcies pour le passage Action->Vue et Vue->Action
- Accès rapide aux commandes Symfony