El documento describe las acciones del rey Salomón y sus lecciones para la vida. Primero, Salomón supo diferenciar entre su pueblo y los extranjeros, tratando mejor a los israelitas. Sin embargo, luego desobedeció a Dios al casarse con mujeres paganas, lo que llevó a la adoración de otros dioses y trajo consecuencias como la pérdida del reino para su familia. Aun así, Dios cumplió su promesa de dar el reino a Jeroboam como lo había anunciado. El documento invita
Este documento contiene 52 historias bíblicas escritas para niños. Cada historia tiene entre 3 y 5 minutos de duración y está acompañada de sugerencias para presentarla de manera atractiva e interesante. El objetivo es aprovechar el tiempo de la Adoración Infantil para enseñar valores y lecciones bíblicas a los niños de una forma sencilla.
Este manual busca ayudar al lector a descubrir la verdadera identidad de Jesucristo y cómo encontrar una nueva vida en él. El primer paso explica que Jesús es el autor de la vida, citando Juan 1:1-4 que dice que él existía desde el principio y que en él estaba la vida. El paso concluye que solo a través de Jesús podemos tener vida eterna.
Spurensucher und Sammler –
Die Initiativen des Sportbundes Pfalz auf dem Gebiet der Sportgeschichte. Vortrag von Asmus Kaufmann M.A. (Sportbund Pfalz) am 19.9. 2012 im Stadtarchiv Speyer
El Festival de Imagenes se celebrará del 15 al 17 de junio en el Centro de Convenciones de la ciudad. El evento contará con exposiciones de fotografía y video de artistas locales emergentes. Este año el festival se enfocará en el tema "Mejor sin ratón" para celebrar el arte creado sin la ayuda de herramientas digitales.
Este documento presenta un resumen de 5 días de lecturas y reflexiones sobre el libro de Esdras. El primer día habla sobre las listas de personas que regresaron de cautiverio. El segundo día destaca la importancia de adorar a Dios en primer lugar. El tercer día describe cómo se les prohibió continuar la construcción del templo. El cuarto día narra cómo comenzaron el trabajo nuevamente. Y el quinto día explica cómo el rey Darío decretó que Dios debe ser adorado.
El documento describe el Castillo de Neuschwanstein en Alemania, un castillo construido por el Rey Luis II de Baviera como un cuento de hadas. El Castillo de Neuschwanstein, ubicado en las montañas de los Alpes, fue diseñado por Luis II para parecerse a los castillos de los cuentos de hadas pero con las tecnologías más avanzadas de la época. Luis II vivió poco tiempo en el Castillo de Neuschwanstein antes de ser depuesto y morir bajo circunstancias misteriosas.
Este documento resume varios versículos bíblicos que hablan sobre Dios, Jesucristo y la salvación a través de la fe. Algunos versículos destacan que la vida eterna es conocer a Dios y a Jesucristo, que Dios creó al hombre por encima de los ángeles, y que Jesús murió por los pecados de la humanidad para ofrecer la salvación a todo aquel que cree.
El documento describe las acciones del rey Salomón y sus lecciones para la vida. Primero, Salomón supo diferenciar entre su pueblo y los extranjeros, tratando mejor a los israelitas. Sin embargo, luego desobedeció a Dios al casarse con mujeres paganas, lo que llevó a la adoración de otros dioses y trajo consecuencias como la pérdida del reino para su familia. Aun así, Dios cumplió su promesa de dar el reino a Jeroboam como lo había anunciado. El documento invita
Este documento contiene 52 historias bíblicas escritas para niños. Cada historia tiene entre 3 y 5 minutos de duración y está acompañada de sugerencias para presentarla de manera atractiva e interesante. El objetivo es aprovechar el tiempo de la Adoración Infantil para enseñar valores y lecciones bíblicas a los niños de una forma sencilla.
Este manual busca ayudar al lector a descubrir la verdadera identidad de Jesucristo y cómo encontrar una nueva vida en él. El primer paso explica que Jesús es el autor de la vida, citando Juan 1:1-4 que dice que él existía desde el principio y que en él estaba la vida. El paso concluye que solo a través de Jesús podemos tener vida eterna.
Spurensucher und Sammler –
Die Initiativen des Sportbundes Pfalz auf dem Gebiet der Sportgeschichte. Vortrag von Asmus Kaufmann M.A. (Sportbund Pfalz) am 19.9. 2012 im Stadtarchiv Speyer
El Festival de Imagenes se celebrará del 15 al 17 de junio en el Centro de Convenciones de la ciudad. El evento contará con exposiciones de fotografía y video de artistas locales emergentes. Este año el festival se enfocará en el tema "Mejor sin ratón" para celebrar el arte creado sin la ayuda de herramientas digitales.
Este documento presenta un resumen de 5 días de lecturas y reflexiones sobre el libro de Esdras. El primer día habla sobre las listas de personas que regresaron de cautiverio. El segundo día destaca la importancia de adorar a Dios en primer lugar. El tercer día describe cómo se les prohibió continuar la construcción del templo. El cuarto día narra cómo comenzaron el trabajo nuevamente. Y el quinto día explica cómo el rey Darío decretó que Dios debe ser adorado.
El documento describe el Castillo de Neuschwanstein en Alemania, un castillo construido por el Rey Luis II de Baviera como un cuento de hadas. El Castillo de Neuschwanstein, ubicado en las montañas de los Alpes, fue diseñado por Luis II para parecerse a los castillos de los cuentos de hadas pero con las tecnologías más avanzadas de la época. Luis II vivió poco tiempo en el Castillo de Neuschwanstein antes de ser depuesto y morir bajo circunstancias misteriosas.
Este documento resume varios versículos bíblicos que hablan sobre Dios, Jesucristo y la salvación a través de la fe. Algunos versículos destacan que la vida eterna es conocer a Dios y a Jesucristo, que Dios creó al hombre por encima de los ángeles, y que Jesús murió por los pecados de la humanidad para ofrecer la salvación a todo aquel que cree.
Este documento presenta la asignatura "Cultura libre: motivación" del Programa Ada-Madrid. Explica que ahora es posible copiar, distribuir y modificar obras de información con gran facilidad y a bajo coste. Sin embargo, aún no se están aprovechando plenamente estas nuevas posibilidades debido a que los modelos sociales, económicos y legales siguen anclados en el siglo XIX. El software libre ha demostrado durante más de 20 años nuevas formas de producir cosas complejas como programas informáticos.
El documento resume varias secciones del capítulo 18 de Lucas en la Biblia. Se habla de la necesidad de persistir en la fe a pesar de circunstancias injustas, mantener la humildad del recaudador de impuestos, conservar la actitud de los niños, y persistir en amar lo espiritual más que lo material.
Este documento discute la importancia de integrar a los padres y madres en el proceso de apoyar a sus hijos para que continúen estudios postsecundarios. Ofrece varias estrategias como mantener una comunicación efectiva, desarrollar actividades que fomenten las relaciones positivas, y utilizar recursos tecnológicos para mantener un contacto frecuente. También enfatiza la necesidad de que los padres adquieran conocimientos sobre los procesos de admisión y los programas disponibles, y establezcan contacto con programas que
Este documento presenta un resumen de tres oraciones de la historia bíblica de la promesa de Dios a Abraham. Dios le prometió a Abraham que le daría la tierra de Canaán a él y a sus hijos para siempre a pesar de que Abraham y su esposa Sara no tenían hijos en ese momento. Más tarde, Dios cumplió su promesa y Abraham y Sara tuvieron un hijo, Isaac, tal como Dios había dicho.
Este resumen presenta la historia bíblica de Jacob el Engañador en 3 oraciones:
Jacob engañó a su hermano Esaú para obtener su bendición de primogenitura, lo que provocó el odio de Esaú; luego Dios le prometió a Jacob que su familia sería bendecida y numerosa a pesar de sus acciones; finalmente, Jacob y Esaú se reconciliaron después de que Jacob regresó a casa con su gran familia.
El documento explora las bases teóricas de la Ecología Humana de la Comunicación (HEoC), una nueva escuela de pensamiento que analiza la realidad comunicativa desde la perspectiva de la Ecología Humana. Se detallan las teorías y autores en los que se sustenta HEoC, incluyendo la Ecología Humana, la Teoría de la Comunicación Humana, el Construccionismo y la Etnometodología. Finalmente, se propone que la comunicación se desarrolla de forma diferente en cada comunidad según sus características
El documento advierte sobre los peligros del alcoholismo y el consumo excesivo de alcohol, señalando que el alcoholismo es una enfermedad que puede llevar a una realidad alterada y a la pérdida del control sobre los límites personales. También sugiere que beber en exceso puede hacer que las personas pierdan la mejor parte de su vida y lleguen a situaciones graves, por lo que insta a las personas a divertirse sin necesidad de consumir alcohol en exceso.
Programa Movilidad Alumnado Comenius IES Río Trubiameibseronda
El documento describe el Programa de Movilidad Comenius, que permite a estudiantes de secundaria pasar de 3 meses a un año escolar estudiando en otro país europeo. Los requisitos incluyen asistir a una escuela participante en el programa y tener al menos 14 años. El programa cubre los costos de preparación, estadía y viaje. El IES Río Trubia envía estudiantes al Lycée Bernard Palissy en Francia, y también recibe estudiantes de este instituto. Los estudiantes informan que la experiencia les está resultando muy positiva
La Unión Europea ha acordado un embargo petrolero contra Rusia en respuesta a la invasión de Ucrania. El embargo prohibirá las importaciones marítimas de petróleo ruso a la UE y pondrá fin a las entregas a través de oleoductos dentro de seis meses. Esta medida forma parte de un sexto paquete de sanciones de la UE destinadas a aumentar la presión económica sobre Moscú y privar al Kremlin de fondos para financiar su guerra.
El documento presenta los objetivos de diseñar currículos de acuerdo a las teorías y prácticas de enseñanza-aprendizaje, definir la teoría y diseño curricular, e identificar los componentes y modelos curriculares del sistema educativo nacional. Además, busca reconocer las áreas curriculares fundamentales para el desarrollo del estudiante.
El documento resume la respuesta de España a Alemania y Austria-Hungría sobre las restricciones comerciales impuestas. La nota de España ha satisfecho a la opinión pública mundial y a los periódicos españoles. Además, critica las otras restricciones impuestas que violan convenciones internacionales. Finalmente, discute rumores falsos sobre cómo obtuvo el periódico información sobre la nota de España.
Este documento proporciona instrucciones para ensamblar y configurar equipos de computo. Explica cómo formatear dispositivos de almacenamiento mediante el uso de herramientas de formato lógico y físico. También describe los tipos comunes de formato como FAT, FAT32 y NTFS y los pasos para formatear particiones e instalar sistemas operativos.
La teoría de las inteligencias múltiples propone que existen diferentes tipos de inteligencia más allá de la inteligencia lógico-matemática tradicional. Howard Gardner identificó ocho tipos de inteligencia: lógico-matemática, lingüística, espacial, musical, cinestésico-corporal, naturalista, intrapersonal e interpersonal. Juntas, la inteligencia intrapersonal y la interpersonal conforman la inteligencia emocional, que determina nuestra capacidad de dirigir nuestra propia vida de manera
Este documento presenta la información de un curso de operación de equipo de computo impartido en el Cetís 109. El curso dura 4 horas a la semana y es impartido por la maestra Margarita Romero Alvarado. El documento incluye la hoja de presentación de una alumna llamada Alfa Yesenia Loredo Castillo de grado 2 grupo A, así como el programa de estudios que cubre competencias disciplinares básicas, secuencias didácticas y los temas a cubrir.
Este documento presenta la asignatura "Cultura libre: motivación" del Programa Ada-Madrid. Explica que ahora es posible copiar, distribuir y modificar obras de información con gran facilidad y a bajo coste. Sin embargo, aún no se están aprovechando plenamente estas nuevas posibilidades debido a que los modelos sociales, económicos y legales siguen anclados en el siglo XIX. El software libre ha demostrado durante más de 20 años nuevas formas de producir cosas complejas como programas informáticos.
El documento resume varias secciones del capítulo 18 de Lucas en la Biblia. Se habla de la necesidad de persistir en la fe a pesar de circunstancias injustas, mantener la humildad del recaudador de impuestos, conservar la actitud de los niños, y persistir en amar lo espiritual más que lo material.
Este documento discute la importancia de integrar a los padres y madres en el proceso de apoyar a sus hijos para que continúen estudios postsecundarios. Ofrece varias estrategias como mantener una comunicación efectiva, desarrollar actividades que fomenten las relaciones positivas, y utilizar recursos tecnológicos para mantener un contacto frecuente. También enfatiza la necesidad de que los padres adquieran conocimientos sobre los procesos de admisión y los programas disponibles, y establezcan contacto con programas que
Este documento presenta un resumen de tres oraciones de la historia bíblica de la promesa de Dios a Abraham. Dios le prometió a Abraham que le daría la tierra de Canaán a él y a sus hijos para siempre a pesar de que Abraham y su esposa Sara no tenían hijos en ese momento. Más tarde, Dios cumplió su promesa y Abraham y Sara tuvieron un hijo, Isaac, tal como Dios había dicho.
Este resumen presenta la historia bíblica de Jacob el Engañador en 3 oraciones:
Jacob engañó a su hermano Esaú para obtener su bendición de primogenitura, lo que provocó el odio de Esaú; luego Dios le prometió a Jacob que su familia sería bendecida y numerosa a pesar de sus acciones; finalmente, Jacob y Esaú se reconciliaron después de que Jacob regresó a casa con su gran familia.
El documento explora las bases teóricas de la Ecología Humana de la Comunicación (HEoC), una nueva escuela de pensamiento que analiza la realidad comunicativa desde la perspectiva de la Ecología Humana. Se detallan las teorías y autores en los que se sustenta HEoC, incluyendo la Ecología Humana, la Teoría de la Comunicación Humana, el Construccionismo y la Etnometodología. Finalmente, se propone que la comunicación se desarrolla de forma diferente en cada comunidad según sus características
El documento advierte sobre los peligros del alcoholismo y el consumo excesivo de alcohol, señalando que el alcoholismo es una enfermedad que puede llevar a una realidad alterada y a la pérdida del control sobre los límites personales. También sugiere que beber en exceso puede hacer que las personas pierdan la mejor parte de su vida y lleguen a situaciones graves, por lo que insta a las personas a divertirse sin necesidad de consumir alcohol en exceso.
Programa Movilidad Alumnado Comenius IES Río Trubiameibseronda
El documento describe el Programa de Movilidad Comenius, que permite a estudiantes de secundaria pasar de 3 meses a un año escolar estudiando en otro país europeo. Los requisitos incluyen asistir a una escuela participante en el programa y tener al menos 14 años. El programa cubre los costos de preparación, estadía y viaje. El IES Río Trubia envía estudiantes al Lycée Bernard Palissy en Francia, y también recibe estudiantes de este instituto. Los estudiantes informan que la experiencia les está resultando muy positiva
La Unión Europea ha acordado un embargo petrolero contra Rusia en respuesta a la invasión de Ucrania. El embargo prohibirá las importaciones marítimas de petróleo ruso a la UE y pondrá fin a las entregas a través de oleoductos dentro de seis meses. Esta medida forma parte de un sexto paquete de sanciones de la UE destinadas a aumentar la presión económica sobre Moscú y privar al Kremlin de fondos para financiar su guerra.
El documento presenta los objetivos de diseñar currículos de acuerdo a las teorías y prácticas de enseñanza-aprendizaje, definir la teoría y diseño curricular, e identificar los componentes y modelos curriculares del sistema educativo nacional. Además, busca reconocer las áreas curriculares fundamentales para el desarrollo del estudiante.
El documento resume la respuesta de España a Alemania y Austria-Hungría sobre las restricciones comerciales impuestas. La nota de España ha satisfecho a la opinión pública mundial y a los periódicos españoles. Además, critica las otras restricciones impuestas que violan convenciones internacionales. Finalmente, discute rumores falsos sobre cómo obtuvo el periódico información sobre la nota de España.
Este documento proporciona instrucciones para ensamblar y configurar equipos de computo. Explica cómo formatear dispositivos de almacenamiento mediante el uso de herramientas de formato lógico y físico. También describe los tipos comunes de formato como FAT, FAT32 y NTFS y los pasos para formatear particiones e instalar sistemas operativos.
La teoría de las inteligencias múltiples propone que existen diferentes tipos de inteligencia más allá de la inteligencia lógico-matemática tradicional. Howard Gardner identificó ocho tipos de inteligencia: lógico-matemática, lingüística, espacial, musical, cinestésico-corporal, naturalista, intrapersonal e interpersonal. Juntas, la inteligencia intrapersonal y la interpersonal conforman la inteligencia emocional, que determina nuestra capacidad de dirigir nuestra propia vida de manera
Este documento presenta la información de un curso de operación de equipo de computo impartido en el Cetís 109. El curso dura 4 horas a la semana y es impartido por la maestra Margarita Romero Alvarado. El documento incluye la hoja de presentación de una alumna llamada Alfa Yesenia Loredo Castillo de grado 2 grupo A, así como el programa de estudios que cubre competencias disciplinares básicas, secuencias didácticas y los temas a cubrir.
Pub/Sub for the masses- Ein Einführungsworkshop in MQTT [GERMAN]Dominik Obermaier
Sprechen Sie MQTT? Dieser Workshop zeigt, was es mit dem schlanken und leichtgewichtigen IoT Protokoll auf sich hat und warum es sich zu einem Standardprotokoll für das Internet of Things etabliert hat. Lernen Sie, warum Pub/Sub für das Internet of Things skaliert und warum HTTP nicht der Weisheit letzter Schluss für alle IoT-Kommunikation ist. Neben einigen Live-Demos sowie einer Einführung in die Funktionsweise des schlanken Publish/Subscribe-Protokolls bekommen Sie Einblick in das junge und sehr aktive Ökosystem rund um MQTT.
Am Ende des Workshops wird ein Java basierter MQTT Todesstern Simulator inklusive Dashboard mit "MQTT over websocket" support entstehen.
Early peek of the upcoming features in Windows 8, the benefits as well as possible consequences for desktop development. This presentation is part one of three, focusing especially on new features of Windows 8.
Wie oft haben Sie schon in Foren gelesen: "Das geht nicht mit Bordmitteln; das muss man mit der C API machen". Schön und gut, aber wie geht das? Welche Tools benötige ich, und wo bekomme ich diese her? Die Session gibt einen Überblick über die Anwendungsgebiete der C / C++ API für Lotus Notes / Domino und erläutert die Installation einer Entwicklungsumgebung. Neben der Erstellung von C Programmen wird auch der direkte Aufruf von Funktionen aus Lotusscript heraus erläutert.
Praktische Beispiele sollen dem Entwickler den Einstieg in die Programmierung mit der C / C++ API für Lotus Notes / Domino erleichtern. Level: Einsteiger, die sich auch in Zeiten von XPages, JAVA und SSJS noch an das "Urgestein C" herantrauen.
Crouzet Automation - em4 Ethernet Broschüre, deutsche FassungCrouzet
Crouzet Automation ist Vorreiter in vereinfachter Programmierung. Unterstützt von erfahrenen Technikern und Entwicklern, bietet Crouzet Automation alternative Automationslösungen für spezialisierte und anspruchsvolle Anwendungen, die sich durch Anwenderfreundlichkeit und hohe Anpassungsfähigkeit auszeichnen.
www.crouzet-automation.com
LinkedIn: https://www.linkedin.com/company/crouzet-automation
Crouzet Automation ist eine Marke von InnoVista Sensors™.
InnoVista Sensors™ : Ihr zuverlässiger Partner, mit dem Sie die industriellen Herausforderungen von heute und von morgen meistern.
InnoVista Sensors™ ist ein weltweit tätiger Spezialist für Sensoren, Steuerungen und Aktuatoren für Automationssysteme.
Unter den Markennamen Crouzet Aerospace, Crouzet Automation, Crouzet Control, Crouzet Motors, Crouzet Switches und Systron Donner Inertial liefert InnoVista Sensors™ ein breites Sortiment von zuverlässigen, effizienten und anpassbaren Komponenten für die Bereiche Luftfahrt- und Verteidigung, Transport und Industrie.
Basierend auf der anerkannten Kompetenz und Innovationskraft seiner Teams stellt InnoVista Sensors™ seinen Kunden weltweit leistungssteigernde Lösungen zur Verfügung.
www.innovistasensors.com
Ein Blick in die Kristallkugel mit dem Ziel spannende und relevante Online-Trends für das Jahr 2002 hervorzusagen. Auf der Liste sind:
- MMS
- WAP 2.0
- J2ME / Embedded Java
- XML Security
- Web Services
- Neue DNS Features
- JXTA
- Device Independence
- Universal Usability
- Flash-Erweiterungen
3. 1 Aufgabe
1.1 Auftraggeber
Dipl.-Ing. Borchert, im Rahmen der Mobile Computing Vorlesung.
1.2 Auftragnehmer
Andrè Schika, Sven Diesendorf, Martin Reinhardt
2 Zielbestimmungen
2.1 Musskriterien
Das Ziel des Bluetooth Chats muss eine Kommunikation mit mehreren
Clients sein. Außerdem muss die Anwendung sowohl als Server als auch
Client dienen.
2.2 Wunschkriterien
Eine Umsetzung für möglichst viele mobile Endgeräte mit MIDP 2.0
Unterstützung wird angestrebt.
2.3 Abgrenzungskriterien
Was die Anwendung nicht können muss, ist die Unterstützung der Geräte
mit MIDP 1.1.
3 Produkteinsatz
3.1 Anwendungsbereiche
Die Anwendung soll im Bereich Kommunikation mit einer begrenzten
Reichweite liegen. Die Reichweite hängt primär vom Bluetooth
Sender/Empfänger ab.
3.2 Zielgruppen
Die Zielgruppe ist jeder, der ein mobiles Endgerät mit MIDP 2.0 sowie
Bluetooth hat.
-1-
4. 4 Produkt
4.1 Produktübersicht
Unser Produkt ist ein Bluetooth Chat, welcher über die Bluetooth -
Schnittstelle der mobilen Endgeräte kommuniziert.
Unsere Anwendung soll das Chatten mit möglichst vielen Nutzern
realisieren.
Es soll möglich sein Nachrichten mit einer maximalen Länge von 200
Zeichen zu versenden. Die Displayanzeige soll Geräteunabhängig sein.
Die Ansicht des Chatfensters ist unabhängig vom Fenster zum schreiben
von neuen Nachrichten und anderen Informationsfenstern.
4.2 Produktleistungen
Das Programm ist wegen der Übersichtlichkeit und Komplexität in mehrere
Klassen unterteilt.
Um die Kommunikation mit vielen Nutzern zu ermöglichen ist eine Klasse
nötig die alle Informationen der Endgeräte abspeichert.
Weiterhin muss sichergestellt werden, dass alle gespeicherten Daten der
Endgeräte aktuell bleiben. Um dies sicherzustellen wird in kurzen
Zeitintervallen nach den Geräten aus der Liste und neuen gesucht.
Wenn ein Benutzer den Chat verlässt, wird dieser aus der Geräteliste
entfernt und alle aktiven Chatnutzer bekommen dies als Meldung auf den
Display.
5 Technische Vorraussetzungen
Mobiles Endgerät:
- MIDP-2.0
- CLDC-1.1
- Java
- Bluetooth
- Symbian OS
-2-
5. 6 Entwicklungsumgebung
Entwicklungsumgebung:
- J2ME 2.2
- J2SE 1.5.0.06
Entwicklungssoftware:
- Netbeans IDE 4.1 und Mobility Pack
- Eclipse 3.2 und eclipseme-Plugin
7 Benutzeroberfläche
Das Startfenster (Abb. 7.1) und das Fenster (Abb. 7.2) mit der
Eingabeaufforderung des Nicknamens.
Abbildung 7.1 Abbildung 7.2
-3-
6. Einen Chatraum (Abb. 7.3) starten, dabei fungiert das mobile Gerät als
Server, welches den Chat zuerst startet. Auf dem zweiten Screenshot
(Abb.7.4) kann man da Fenster zur Eingabe der zu sendenden Nachricht
sehen.
Abbildung 7.3 Abbildung 7.4
Kommunikation zwischen zwei virtuellen Handys. Hier empfängt Gerät Nr.
1 (Abb. 7.5) die Meldung vom Gerät Nr. 2 (Abb. 7.6).
Abbildung 7.5 Abbildung 7.6
-4-
7. 8 Geschäftsprozessdiagramme
Sich als erster im Chat anmelden
Sich als zweiter im Chat anmelden
Schreiben einer Nachricht
-5-
9. 9 Funktionen
Der Bluetooth-Chat ist in mehrere Klassen und Funktionen aufgeteilt. Die
Funktionen und Klassen erfüllen bestimmte Aufgaben, welche hier
genauer vorgestellt werden.
Hier wird gezeigt wie der Chat funktioniert, es wird der Ablauf dargestellt.
Funktionenübersicht
Die ChatMain-Klasse ist die Hauptklasse der Anwendung. Hier wird die
grafische Oberfläche aufgebaut.
[. . .]
public class ChatMain extends MIDlet implements BTListener, CommandListener
{
[. . .]
public void startApp()
{
// Neue Referenz für das Display
display = Display.getDisplay(this );
// GUI initialisieren
inputui = new InputUI();
messageui = new MessageUI();
nameui = new NameUI();
display.setCurrent( nameui );
}
[. . .]
public void handleAction( String event, Object param1, Object param2 )
{
[. . .]
// Ausgelöste netzwerktechnische Events vom Benutzer abfangen und
// entsprechend reagieren
// JOIN-EVENT – den Chatraum beitretten
// SENT-EVENT – Senden der Nachricht
// RECEIVED-EVENT – Empfangen der Nachricht
// LEAVE-EVENT – Verlassen des Chats
}
public void commandAction(Command c, Displayable d)
-7-
10. {
[. . .]
// Hier werden die Menüpunkte, welche vom Benutzer ausgewählt wurden
// bearbeitet
}
[. . .]
}
Die Klasse NameUI zeichnet das Fenster für die Eingabe des
Nicknamens.
public class NameUI extends Form
{
TextField text;
public NameUI()
{
super("Nicknamen eingeben");
setCommandListener( ChatMain.instance );
addCommand(new Command("Chat", Command.SCREEN, 1));
append( new StringItem( "", "Bitte geben Sie Ihren Nicknamen ein:" ) );
append( text = new TextField( "Dein Nickname", "", 10, TextField.ANY ));
}
}
Die Klasse MessageUI stellt das Chatfenster dar, hier werden die
Nachrichten auf dem Bildschirm dargestellt und man kann hier die
Nachrichten löschen. Alte Nachrichten können nicht angezeigt werden. Da
die Daten in einem Array abgespeichert werden, welcher immer
aktualisiert wird.
public class MessageUI extends Canvas
{
[. . .] //Variablendefinition
public MessageUI()
{
addCommand(new Command("Schreiben", Command.SCREEN, 1));
addCommand(new Command("Loeschen", Command.SCREEN, 2));
addCommand(new Command("Ueber", Command.SCREEN, 3));
addCommand(new Command("Beenden", Command.SCREEN, 4));
setCommandListener( ChatMain.instance );
}
// das Bildschirm nach jeder Nachricht aktualisieren
protected void paint(Graphics g)
{
[. . .]
// Nachricht auf dem Bildschirm darstellen
for ( int i= midx; i< msgs.size(); i++ )
{
ChatPacket p = (ChatPacket)msgs.elementAt(i);
String s = p.sender+": "+p.msg;
g.drawString( s, 0, y, Graphics.BASELINE | Graphics.LEFT );
y += fh;
}
}
-8-
11. //im Chatfenster scrollen
public void keyPressed( int key )
{
[. . .]
}
}
Die Klasse BTListener beinhaltet mögliche Kommandos und reagiert auf
diese.
public interface BTListener
{ public final static String EVENT_JOIN = "join";
public final static String EVENT_LEAVE = "leave";
public final static String EVENT_RECEIVED = "received";
public final static String EVENT_SENT = "sent";
public void handleAction( String action, Object param1, Object param2 );}
Die Chatpacket-Klasse beinhaltet die Nachricht, welche
verpackt über Bluetooth geschickt wird.
public class ChatPacket
{
// ein von NetLayer.SIGNAL_XXX Signalen
public int signal;
// Nickname des Senders
public String sender;
// Inhalt der Nachricht
public String msg;
// Konstruktoren für das Paket
public ChatPacket(int signal, String msg)
{
this.signal = signal; this.msg = msg;
}
public ChatPacket(int signal, String sender, String msg)
{
this.signal = signal; this.sender = sender; this.msg = msg;
}
public ChatPacket() { }
}
Die Klasse EndPoint repräsentiert alle Eigenschaften eines entfernten
mobilen Gerätes und ist für das Senden und Empfangen der Nachrichten
verantwortlich.
public class EndPoint
{
RemoteDevice remoteDev; // Entferntes Gerät
DeviceClass remoteClass; // entferte Klasse des Gerätes
String remoteUrl; // entfernte Service URL
StreamConnection con; // Verbundung zu entfernten Geräten
int transId = -1; // -1 default - Bluetooth DiscoveryID
[. . .]
public EndPoint( NetLayer btnet, RemoteDevice rdev, StreamConnection c )
{
this.btnet = btnet;
remoteDev = rdev;
try
{
-9-
12. remoteName = rdev.getFriendlyName(false); // temp name
}
catch (IOException ex) { remoteName = "Unbekannt"; }
[. . .]
}
// Paket an alle Geräte senden die man gefunden hat
public synchronized void putString( int signal, String s )
{
[. . .]
}
//Nachricht von der Gegenseite empfangen (alle Geräte, die was schicken)
public synchronized ChatPacket getString()
{
[. . .]
}
[. . .]
}
Die InputUI stellt das Eingabefenster für die Nachricht dar.
Die Nachricht hat eine maximale Länge von 200 Zeichen.
public class InputUI extends TextBox
{
public InputUI()
{
super("Nachricht eingeben", "", 200, TextField.ANY);
addCommand(new Command("Senden", Command.SCREEN, 1));
addCommand(new Command("Zurueck", Command.SCREEN, 1));
setCommandListener( ChatMain.instance );
}
public void showUI()
{
this.setString("");
}
}
Die Klasse NetLayer behandelt die Bluetooth Konvektivitäten und den
Geräte/Service Such-Prozess. In dieser Klasse wird nach Geräten gesucht,
lokaler Server erstellt, ankommende Verbindungen werden entsprechend
behandelt und Verbindungen zu entfernten Geräten hergestellt.
[. . .]
public class NetLayer implements Runnable
{
public final static int SIGNAL_HANDSHAKE = 0;
public final static int SIGNAL_MESSAGE = 1;
public final static int SIGNAL_TERMINATE = 3;
public final static int SIGNAL_HANDSHAKE_ACK = 4;
public final static int SIGNAL_TERMINATE_ACK = 5;
// spezielle UUID
private final static UUID uuid = new
UUID("102030405060708090A0B0C0D0E0F010", false);
// Hauptklasse als SERVICE_TELEPHONY
private final static int SERVICE_TELEPHONY = 0x400000;
LocalDevice localDevice = null;
DiscoveryAgent agent = null;
StreamConnectionNotifier server;
BTListener callback = null;
boolean done = false;
- 10 -
13. String localName = "";
Vector endPoints = new Vector();
Vector pendingEndPoints = new Vector();
Hashtable serviceRecordToEndPoint = new Hashtable();
Object lock = new Object();
Timer timer = new Timer();
public NetLayer()
{
}
public void init(String name, BTListener callback)
{
try
{
[. . .]
localDevice = LocalDevice.getLocalDevice();
localDevice.setDiscoverable(DiscoveryAgent.GIAC);
agent = localDevice.getDiscoveryAgent();
Thread thread = new Thread( this );
thread.start();
[. . .]
}
public void disconnect()
{
// Server stoppen, keine Clients akzeptieren
[. . .]
}
}
[. . .]
public EndPoint findEndPointByRemoteDevice( RemoteDevice rdev )
{
for ( int i=0; i < endPoints.size(); i++ )
{
EndPoint endpt = (EndPoint) endPoints.elementAt( i );
if ( endpt.remoteDev.equals( rdev ) )
{
return endpt;
}
}
return null;
}
public EndPoint findEndPointByTransId( int id )
{
for ( int i=0; i < pendingEndPoints.size(); i++ )
{
EndPoint endpt = (EndPoint) pendingEndPoints.elementAt( i );
if ( endpt.transId == id )
{
return endpt;
}
}
return null;
}
/**
* Nachricht an alle bekannten geräte abschicken
*/
- 11 -
14. public void sendString( String s )
{
for ( int i=0; i < endPoints.size(); i++ )
{
EndPoint endpt = (EndPoint) endPoints.elementAt( i );
endpt.putString( NetLayer.SIGNAL_MESSAGE, s );
}
}
/**
* Ressourcen freigeben, wenn Gerät "verloren" ist
*/
public void cleanupRemoteEndPoint( EndPoint endpt )
{
endpt.reader.stop();
endpt.sender.stop();
endPoints.removeElement( endpt );
}
/**
* Implementiert den lokalen BTC
*/
public void run()
{
// Verbindung herstellen
[. . .]
while( !done)
{
try
{
ChatMain.instance.gui_log( "", "Warte auf Verbindungen ..." );
c = server.acceptAndOpen();
RemoteDevice rdev = RemoteDevice.getRemoteDevice( c );
EndPoint endpt = findEndPointByRemoteDevice( rdev );
if ( endpt != null )
{
//TODO
}
else
{
endpt = new EndPoint( this, rdev, c);
Thread t1 = new Thread( endpt.sender );
t1.start();
Thread t2 = new Thread( endpt.reader );
t2.start();
endPoints.addElement( endpt );
}
}
catch (IOException e)
{
[. . .]
}
finally
{
// TODO
}
}
}
/**
* Eigener Discoverly Listener um Geräte und Services abzufangen.
*/
- 12 -
15. [. . .]
/**
* Nach neuen Geräten 100 ms lang suchen.
*/
public void inquiryCompleted(int transId)
{
timer.schedule( new DoServiceDiscovery(), 100 );
}
/**
* Ein Service ist vom entfernten Gerät entdeckt. Verbinde dich mit dem
Gerät.
*/
public void servicesDiscovered(int transId, ServiceRecord[] svcRec)
{
[. . .]
}
/**
* Service Discovery ist abgeschlossen.
*/
public void serviceSearchCompleted(int transID, int respCode)
{
[. . .]
}
}
class DoServiceDiscovery extends TimerTask
{
public void run()
{
[. . .]
}
}
}
Die Klasse Reader ist für das Lesen der Daten und ihre Verarbeitung
verantwortlich.
[. . .]
public class Reader implements Runnable
{
[. . .]
public void run()
{
try
{
DataInputStream datain = endpt.con.openDataInputStream();
while ( !done )
{
int signal = datain.readInt();
if ( signal == NetLayer.SIGNAL_MESSAGE )
{
String s = datain.readUTF();
ChatPacket packet = new ChatPacket( NetLayer.SIGNAL_MESSAGE,
endpt.remoteName, s );
endpt.callback.handleAction( BTListener.EVENT_RECEIVED, endpt,
packet );
- 13 -
16. }
else if ( signal == NetLayer.SIGNAL_HANDSHAKE )
{
String s = datain.readUTF();
endpt.remoteName = s;
endpt.putString( NetLayer.SIGNAL_HANDSHAKE_ACK, endpt.localName );
endpt.callback.handleAction( BTListener.EVENT_JOIN, endpt, null );
}
[. . .]
}
}
Die Klasse Sender sendet die Daten über die hergestellte Verbindung an
alle Geräte.
[. . .]
public class Sender implements Runnable
{
public EndPoint endpt;
private boolean done = false;
public Sender()
{
}
public void stop()
{
done = true;
}
public void run()
{
try
{
DataOutputStream dataout = endpt.con.openDataOutputStream();
while( !done )
{
if ( ! endpt.peekString() )
{
synchronized (this)
{ this.wait(5000); }
}
ChatPacket s = endpt.getString();
if ( s != null )
{
dataout.writeInt(s.signal);
dataout.writeUTF(s.msg );
dataout.flush();
}
if ( s != null && s.signal == NetLayer.SIGNAL_TERMINATE )
{ stop(); }
}
dataout.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}}
- 14 -
17. 10 Problematik
Folgende Probleme sind während der Entwicklung aufgetreten:
1.
T630 war nicht mit MIDP 2.0 Kompatibel, wodurch die Entwicklung des
Programms nur auf Nokia fortgesetzt wurde
2.
Verbindungsprobleme mit Bluetooth, hier war das finden der Geräte am
Anfang ein Problem.
3.
Übertragungsprobleme mit Bluetooth, hier hatten wir das Problem mit der
Übertragung von Zeichen von einem Gerät zu dem anderem.
4.
Zusammenbau der Oberfläche und der Funktionen, hier musste die
Oberfläche etwas vereinfacht werden.
5.
Speicherung von gefunden Geräten in Vektoren und deren Abruf aus
diesen Vektoren.
- 15 -