Chat per Bluetooth Handy
Wenn die Profil- bzw. Kennwortprüfung eine Übereinstimmung ergibt, wird eine Textnachricht mit dem Inhalt „ok“, falls keine Übereinstimmung besteht wird der String „deny“ zurück an den Kommunikationspartner geschickt.
Auf den Empfang einer „deny“– Nachricht reagiert die handleAction() – Methode mit dem Abbruch der Verbindung durch den Methodenaufruf resetComm(). Wird die Nachricht „ok“ empfangen ist sowohl der Client als auch der Server mit der Kommunikation einverstanden bzw. haben einen passenden Kommunikationspartner gefunden.
Deshalb wird auf ein empfangenes „ok“ hin mittels der sendPacket() – Methode ein Informationspaket an den Partner verschickt, das aus dem eigenen Nicknamen, dem Informationstext, dem eigenen Profil bzw. Kennwort sowie aus einem byte[] mit den Binärdaten des eigenen Fotos besteht. Da dieses DataPacket aus mehreren Strings sowie Binärdaten besteht, wird es mit dem Typ BluetoothLayer.SIGNAL_PACKET identifiziert, damit die handleAction() – Methode es gesondert behandelt.
Wenn die Methode DataPacket.getSignal() den Typ SIGNAL_PACKET zurückgibt, wird aus den Daten des byte[] ein Image erzeugt, und zusammen mit Nickname ( getNickname() ), Informationstext ( getInfo() ) und Profil bzw Kennwort ( getProfil() ) der Form F_Commuication übergeben. Nun wird das eigene Informationspaket verschickt, sofern es nicht bereits verschickt wurde (die handleAction() – Methode implementiert die Funktionalität für Client und Server) und F_Communication auf dem Display dargestellt. Zur Benachrichtigung des Benutzers wird die Methode alarm() aufgerufen, welche – je nach Voreinstellung – einen Klingelton abspielt, den Vibrationsalarm und die Hintergrundbeleuchtung des Displays aktiviert.
Nachdem beide Informationspakete ausgetauscht sind und auf dem Display dargestellt werden, haben die Benutzer die Möglichkeit über Text- bzw. Sprachnachrichten miteinander zu kommunizieren.
Wie bereits erwähnt sind Textnachrichten vom Typ SIGNAL_MESSAGE, sie werden immer mit einer Nachricht vom Typ SIGNAL_MESSAGE_ACK durch die Netzwerkschicht bestätigt, beim Empfang eines SIGNAL_MESSAGE_ACK löst die handleAction() – Methode den Aufruf von MMUtil.playTone() aus, um dem Benutzer zu bestätigen, dass der Partner die Nachricht erhalten hat. Ebenso werden Sprachnachrichten, deren Daten als byte[] übertragen werden ( SIGNAL_DATA ), mit dem SIGNAL_DATA_ACK bestätigt, woraufhin der Benutzer ebenso mit einem Signal-Ton informiert wird.
Textnachrichten beginnen mit „Chat:“, beim Empfang einer solchen Nachricht wird diese auf der F_Chat – Form dargestellt. Beim Eingang einer Nachricht mit Binärdaten ( SIGNAL_DATA ) wird zunächst mittels der getType() – Methode des DataPacket abgefragt, welchen Typs die Binärdaten im byte[] sind. Falls der Typ-String mit „audio/“ beginnt, wird das byte[] der playVoice – Methode der Klasse MMUtil übergeben.
Beim Abbruch der Verbindung durch den anderen Benutzer wird eine Terminate-Nachricht empfangen, welche den EVENT_DISCONNECT auslöst. Der Benutzer wird über den Abbruch der Verbindung informiert und die resetComm() – Methode aufgerufen. Da es sich um einen willentlichen Abbruch durch den anderen Benutzer handelt, wird nicht versucht erneut zu diesem Gerät zu verbinden.
Der EVENT_SENT wird beim Verschicken einer Nachricht, egal welchen Typs, ausgelöst, jedoch regiert die Applikation vorerst nicht auf diesen Event. Es wäre z. B. möglich, auf eventuell fehlerhaft übertragene Nachrichten zu reagieren und diese erneut zu verschicken. Im konkreten Anwendungsfall wäre es jedoch eher verwirrend, wenn Nachrichten bei einer Kommunikation nachträglich erneut verschickt würden.
Ähnliche Artikel zu "Chat per Bluetooth Handy":
Wenn Du noch Fragen zum Thema Chat per Bluetooth Handy hast, dann schreib einfach einen Kommentar - oder schau dir meine Buchtipps an: