Ich möchte einen kurzen Beitrag bringen zu dem, was ich gerade eben gelernt habe:
Ich habe für mein
VCL-Programm (PixPower) mit XE7 ein kleines FMX-Hilfsprogramm geschrieben, welches von einem mobilen Gerät (derzeit nur Android) ein gerade gemachtes Photo oder ein Photo, das der User aus der Foto-Bibliothek auswählt, an das Desktop-Programm überträgt. Das Programm basiert auf dem Photowall-Demo-Programm, das EMBA im Tethering-Ordner mitliefert.
Beispiel ausprobiert, alles läuft. Prima. In mein PixPower-Programm integriert:
Läuft zwar...
... aber nur, wenn die beiden Tethering-Komponenten bereits zum Programmstart aktiviert sind. Das könnte man zwar machen, finde ich aber doof, wenn beim Programmstart schon direkt die Firewall angeht.
Nach einigem Suchen habe ich herausgefunden: Habe, wie früher so üblich beim Start des Programms im Oncreate-Event der Mainform dem
"Application.OnMessage := AppMessage" zugewiesen.
Keine Ahnung warum, aber das war der Grund, warum eine nachträgliche Aktivierung der Tethering-Komponenten (eben erst dann, wenn ich einen Empfangsdialog aufrufe) nicht funktioniert. Bringt anscheinend die Kommunikation durcheinander. Workaround war, die Nachrichten, die ich bislang in der eigenen AppMessage-Procedure verarbeitet habe, in einer TApplicationEvents-Komponente (da in "OnMessage") verarbeite.
Danach funktionierte alles wie gewünscht.
Ach ja, anscheinend wird für App-Tethering die volle
RTTI-Funktionalität benötigt, das hier musste ich deaktivieren:
Delphi-Quellcode:
{$weaklinkrtti on}
{$rtti explicit methods([]) properties([]) fields([])}
Das "fertige" Hilfsprogramm kann man sich bei Interesse hier mal ansehen:
http://youtu.be/5MDKZI06w4g (Dauer: 2 Minuten)
Bei Gelegenheit werde ich das Programm noch erweitern und die ab XE7 bestehende Übertragungsmöglichkeit per Bluetooth ergänzen.