mercredi 14 avril 2010

lancer automatiquement MIDlet, Utiliser le Push Registry.

Le message d'origine à partir de: http://developers.sun.com/mobility/midp/questions/pushregistry/

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- attribut. L'attribut MIDlet- est toujours nécessaire dans la JAD ou manifeste, comme c'est le MIDlet-autorisations d'attribut, dans le cas d'une suite MIDlet signé. Une entrée dynamique peut être activée (désactivée à l'aide et l'PushRegistry.unregisterConnection () méthode) après l'installation suite de MIDlets. Un exemple de fichier JAD devrait contenir:

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

Aucun commentaire:

Enregistrer un commentaire