Delphi Seattle Android Service Development (iii)
Last Update:2015-09-20
Source: Internet
Author: User
<span id="Label3"></p><p><p>There are four types of Android services in Delphi 10, an article in the above Touyou Introduction.</p></p><p><p>Do an example of a remote service today. (part of the code is to copy others, if not very clear, Self-reinforcing)</p></p><p><p></p></p><p><p>Remote service is actually the main program contains the service module, another program can be Called.</p></p><p><p>Because of the low-level error of Delphi 10, Some things need to be modified manually. This piece can refer to http://blog.qdac.cc/?p=2839</p></p><p><p>In order not to affect the successful completion of this example, the above modification is not used in this Example. This is handled directly in this Example.</p></p><p><p>Start Now:</p></p><p><p>As before, set up a remote service first</p></p><p><p></p></p><p><p>Generate files, Save Directories.</p></p>Open Servicedmp<p><p>Enter the following code</p></p><pre><span style="color: #0000ff;"><span style="color: #0000ff;">uses</span></span><span style="color: #000000;"><span style="color: #000000;">androidapi.helpers;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">function</span></span>Tandroidservicedm.androidservicehandlemessage (<span style="color: #0000ff;"><span style="color: #0000ff;">Const</span></span><span style="color: #000000;"><span style="color: #000000;">sender:tobject; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Const</span></span><span style="color: #000000;"><span style="color: #000000;">amessage:jmessage): Boolean;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Const</span></span><span style="color: #000000;"><span style="color: #000000;">get_string</span></span>=<span style="color: #800080;"><span style="color: #800080;">1234</span></span><span style="color: #000000;"><span style="color: #000000;">; Service_string</span></span>=<span style="color: #800080;"><span style="color: #800080;">4321</span></span><span style="color: #000000;"><span style="color: #000000;">;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">var</span></span><span style="color: #000000;"><span style="color: #000000;">lmessage:jmessage; lbundle:jbundle;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">begin</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;"></span> case</span>Amessage.what<span style="color: #0000ff;"><span style="color: #0000ff;"></span> of</span><span style="color: #000000;"><span style="color: #000000;">get_string:</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">begin</span></span><span style="color: #000000;"><span style="color: #000000;">lbundle:</span></span>= Tjbundle.<span style="color: #0000ff;"><span style="color: #0000ff;">Create</span></span>;<span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">we can not send String because</span> are not parcelable</span>Lmessage: = Tjmessage.<span style="color: #0000ff;"><span style="color: #0000ff;">Create</span></span><span style="color: #000000;"><span style="color: #000000;">; Lmessage.what:</span></span>=<span style="color: #000000;"><span style="color: #000000;">service_string; Lbundle.putstring (tandroidhelper.stringtojstring (</span></span><span style="color: #800000;"><span style="color: #800000;">'</span></span><span style="color: #800000;"><span style="color: #800000;">Key</span></span><span style="color: #800000;"><span style="color: #800000;">'</span></span>), tandroidhelper.stringtojstring (<span style="color: #800000;"><span style="color: #800000;">'</span></span><span style="color: #800000;"><span style="color: #800000;">This is a message from the service!!!</span></span><span style="color: #800000;"><span style="color: #800000;">'</span></span><span style="color: #000000;"><span style="color: #000000;">)); Lmessage.obj:</span></span>=<span style="color: #000000;"><span style="color: #000000;">lbundle; AMessage.replyTo.send (lmessage); Result:</span></span>=<span style="color: #000000;"><span style="color: #000000;">True; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">End</span></span><span style="color: #000000;"><span style="color: #000000;">; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Else</span></span><span style="color: #000000;"><span style="color: #000000;">Result:</span></span>=<span style="color: #000000;"><span style="color: #000000;">False; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">End</span></span><span style="color: #000000;"><span style="color: #000000;">;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">End</span></span>;</pre><p><p>ok, start compiling, There's an error, of Course. Comrade EMB made a low-level mistake.</p></p><p><p>To enter manual mode, open the following file:</p></p><p><p></p></p><p><p>Modify</p></p><p><p></p></p><p><p>Now compile, no problem, good, Save.</p></p><p><p>Now we are building a new project to join the service and use this service with the following interface:</p></p><p><p></p></p><p><p>Note The Enabled:=false of the button that gets the data;</p></p><p><p>The code is as follows</p></p><pre><span style="color: #0000ff;"><span style="color: #0000ff;">Unit</span></span><span style="color: #000000;"><span style="color: #000000;">mainp;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Interface</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">uses</span></span><span style="color: #000000;"><span style="color: #000000;">system.sysutils, system.types, system.uitypes, system.classes, system.variants, FMX. Types, FMX. Controls, FMX. Forms, FMX. Graphics, FMX. Dialogs, fmx.stdctrls, FMX. controls.presentation,system.android.service, Androidapi.JNI.Os;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">type</span></span><span style="color: #000000;"><span style="color: #000000;">TFORM3</span></span>=<span style="color: #0000ff;"><span style="color: #0000ff;">class</span></span><span style="color: #000000;"><span style="color: #000000;">(tform) label1:tlabel; button1:tbutton; button2:tbutton; getdatabutton:tbutton; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">procedure</span></span><span style="color: #000000;"><span style="color: #000000;">formcreate (sender:tobject); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">procedure</span></span><span style="color: #000000;"><span style="color: #000000;">Button1Click (sender:tobject); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">procedure</span></span><span style="color: #000000;"><span style="color: #000000;">Button2click (sender:tobject); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">procedure</span></span><span style="color: #000000;"><span style="color: #000000;">Getdatabuttonclick (sender:tobject); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">procedure</span></span><span style="color: #000000;"><span style="color: #000000;">Formdestroy (sender:tobject); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Private</span></span><span style="color: #000000;"><span style="color: #000000;">fserviceconnection:tremoteserviceconnection; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">procedure</span></span>Onserviceconnected (<span style="color: #0000ff;"><span style="color: #0000ff;">Const</span></span><span style="color: #000000;"><span style="color: #000000;">servicemessenger:jmessenger); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">procedure</span></span>Onhandlemessage (<span style="color: #0000ff;"><span style="color: #0000ff;">Const</span></span><span style="color: #000000;"><span style="color: #000000;">amessage:jmessage); </span></span><span style="color: #008000;"><span style="color: #008000;">{</span></span><span style="color: #008000;"><span style="color: #008000;">Private Declarations</span></span><span style="color: #008000;"><span style="color: #008000;">}</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;"></span> public</span> <span style="color: #008000;"><span style="color: #008000;">{</span></span><span style="color: #008000;">public <span style="color: #008000;">declarations</span></span><span style="color: #008000;"><span style="color: #008000;">}</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">End</span></span><span style="color: #000000;"><span style="color: #000000;">;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">var</span></span><span style="color: #000000;"><span style="color: #000000;">form3:tform3;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Const</span></span><span style="color: #000000;"><span style="color: #000000;">get_string</span></span>=<span style="color: #800080;"><span style="color: #800080;">1234</span></span><span style="color: #000000;"><span style="color: #000000;">; Service_string</span></span>=<span style="color: #800080;"><span style="color: #800080;">4321</span></span><span style="color: #000000;"><span style="color: #000000;">;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Implementation</span></span><span style="color: #008000;"><span style="color: #008000;">{</span></span><span style="color: #008000;"><span style="color: #008000;">$R *.FMX</span></span><span style="color: #008000;"><span style="color: #008000;">}</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">uses</span></span><span style="color: #000000;"><span style="color: #000000;">androidapi.helpers, Androidapi.JNI.JavaTypes, Androidapi.JNI.Widget;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">procedure</span></span><span style="color: #000000;"><span style="color: #000000;">Tform3.button1click (sender:tobject);</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">begin</span></span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Binding Service</span></span><span style="color: #000000;"><span style="color: #000000;">Fserviceconnection.bindservice (</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">APK name containing the service</span></span> <span style="color: #800000;"><span style="color: #800000;">'</span></span><span style="color: #800000;"><span style="color: #800000;">Com.embarcadero.xalionhostapp</span></span><span style="color: #800000;"><span style="color: #800000;">'</span></span><span style="color: #000000;"><span style="color: #000000;">, </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">service Name-always starts with "com.embarcadero.services"</span></span> <span style="color: #800000;"><span style="color: #800000;">'</span></span><span style="color: #800000;"><span style="color: #800000;">Com.embarcadero.services.xalionremoteservice</span></span><span style="color: #800000;"><span style="color: #800000;">'</span></span><span style="color: #000000;"><span style="color: #000000;">);</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">End</span></span><span style="color: #000000;"><span style="color: #000000;">;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">procedure</span></span><span style="color: #000000;"><span style="color: #000000;">Tform3.button2click (sender:tobject);</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">begin</span></span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;"></span> unbind</span> <span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>Fserviceconnection <><span style="color: #0000ff;"><span style="color: #0000ff;">Nil</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;"></span> then</span><span style="color: #000000;"><span style="color: #000000;">fserviceconnection.unbindservice; Getdatabutton.enabled:</span></span>=<span style="color: #000000;"><span style="color: #000000;">False;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">End</span></span><span style="color: #000000;"><span style="color: #000000;">;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">procedure</span></span><span style="color: #000000;"><span style="color: #000000;">tform3.formcreate (sender:tobject);</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">begin</span></span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Initializing the service connection</span></span>Fserviceconnection: = Tremoteserviceconnection.<span style="color: #0000ff;"><span style="color: #0000ff;">Create</span></span><span style="color: #000000;"><span style="color: #000000;">; Fserviceconnection.onconnected:</span></span>=<span style="color: #000000;"><span style="color: #000000;">onserviceconnected; Fserviceconnection.onhandlemessage:</span></span>=<span style="color: #000000;"><span style="color: #000000;">onhandlemessage;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">End</span></span><span style="color: #000000;"><span style="color: #000000;">;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">procedure</span></span><span style="color: #000000;"><span style="color: #000000;">Tform3.formdestroy (sender:tobject);</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">begin</span></span><span style="color: #000000;"><span style="color: #000000;">fserviceconnection.free;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">End</span></span><span style="color: #000000;"><span style="color: #000000;">;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">procedure</span></span><span style="color: #000000;"><span style="color: #000000;">Tform3.getdatabuttonclick (sender:tobject);</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">var</span></span><span style="color: #000000;"><span style="color: #000000;">lmessage:jmessage;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">begin</span></span><span style="color: #000000;"><span style="color: #000000;">lmessage:</span></span>= TJMessage.JavaClass.obtain (<span style="color: #0000ff;"><span style="color: #0000ff;">Nil</span></span><span style="color: #000000;"><span style="color: #000000;">, get_string); Lmessage.replyto:</span></span>=<span style="color: #000000;"><span style="color: #000000;">fserviceconnection.localmessenger; FServiceConnection.ServiceMessenger.send (lmessage);</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">End</span></span><span style="color: #000000;"><span style="color: #000000;">;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">procedure</span></span>Tform3.onhandlemessage (<span style="color: #0000ff;"><span style="color: #0000ff;">Const</span></span><span style="color: #000000;"><span style="color: #000000;">amessage:jmessage);</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">var</span></span><span style="color: #000000;"><span style="color: #000000;">lstr:jstring; lbundle:jbundle;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">begin</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;"></span> case</span>Amessage.what<span style="color: #0000ff;"><span style="color: #0000ff;"></span> of</span><span style="color: #000000;"><span style="color: #000000;">service_string:</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">begin</span></span><span style="color: #000000;"><span style="color: #000000;">lbundle:</span></span>=<span style="color: #000000;"><span style="color: #000000;">Tjbundle.wrap (amessage.obj); Lstr:</span></span>= Lbundle.getstring (tandroidhelper.stringtojstring (<span style="color: #800000;"><span style="color: #800000;">'</span></span><span style="color: #800000;"><span style="color: #800000;">Key</span></span><span style="color: #800000;"><span style="color: #800000;">'</span></span><span style="color: #000000;"><span style="color: #000000;">)); TJToast.JavaClass.makeText (tandroidhelper.context, lstr.subsequence (</span></span><span style="color: #800080;"><span style="color: #800080;">0</span></span><span style="color: #000000;"><span style="color: #000000;">, lstr.length), TJToast.JavaClass.LENGTH_SHORT). show; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">End</span></span><span style="color: #000000;"><span style="color: #000000;">; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Else</span></span><span style="color: #000000;"><span style="color: #000000;">FServiceConnection.Handler.Super.handleMessage (amessage); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">End</span></span><span style="color: #000000;"><span style="color: #000000;">;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">End</span></span><span style="color: #000000;"><span style="color: #000000;">;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">procedure</span></span>Tform3.onserviceconnected (<span style="color: #0000ff;"><span style="color: #0000ff;">Const</span></span><span style="color: #000000;"><span style="color: #000000;">servicemessenger:jmessenger);</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">begin</span></span><span style="color: #000000;"><span style="color: #000000;">getdatabutton.enabled:</span></span>=<span style="color: #000000;"><span style="color: #000000;">True;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">End</span></span><span style="color: #000000;"><span style="color: #000000;">;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">End</span></span>.</pre><p><p>Now add the service you just Built.</p></p><p><p></p></p><p><p>Compile and Run.</p></p><p><p>Is it going to work?</p></p><p><p>First click on the binding service, and so on to get the data can point, click, you can take the message sent to the Service.</p></p><p><p></p></p><p><p></p></p><p><p>OK, This just realizes the internal communication, we also need to do an additional app. So that it can also use this service.</p></p><p><p>Re-create a new app.</p></p><p><p>The interface is as Follows:</p></p><p><p></p></p><p><p>The code is very similar to the main program</p></p><pre><span style="color: #0000ff;"><span style="color: #0000ff;">Unit</span></span><span style="color: #000000;"><span style="color: #000000;">mainp;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Interface</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">uses</span></span><span style="color: #000000;"><span style="color: #000000;">system.sysutils, system.types, system.uitypes, system.classes, system.variants, FMX. Types, FMX. Controls, FMX. Forms, FMX. Graphics, FMX. Dialogs, fmx.stdctrls, FMX. controls.presentation,system.android.service, Androidapi.JNI.Os;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">type</span></span><span style="color: #000000;"><span style="color: #000000;">TFORM3</span></span>=<span style="color: #0000ff;"><span style="color: #0000ff;">class</span></span><span style="color: #000000;"><span style="color: #000000;">(tform) label1:tlabel; button1:tbutton; button2:tbutton; getdatabutton:tbutton; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">procedure</span></span><span style="color: #000000;"><span style="color: #000000;">formcreate (sender:tobject); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">procedure</span></span><span style="color: #000000;"><span style="color: #000000;">Button1Click (sender:tobject); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">procedure</span></span><span style="color: #000000;"><span style="color: #000000;">Button2click (sender:tobject); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">procedure</span></span><span style="color: #000000;"><span style="color: #000000;">Getdatabuttonclick (sender:tobject); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">procedure</span></span><span style="color: #000000;"><span style="color: #000000;">Formdestroy (sender:tobject); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Private</span></span><span style="color: #000000;"><span style="color: #000000;">fserviceconnection:tremoteserviceconnection; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">procedure</span></span>Onserviceconnected (<span style="color: #0000ff;"><span style="color: #0000ff;">Const</span></span><span style="color: #000000;"><span style="color: #000000;">servicemessenger:jmessenger); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">procedure</span></span>Onhandlemessage (<span style="color: #0000ff;"><span style="color: #0000ff;">Const</span></span><span style="color: #000000;"><span style="color: #000000;">amessage:jmessage); </span></span><span style="color: #008000;"><span style="color: #008000;">{</span></span><span style="color: #008000;"><span style="color: #008000;">Private Declarations</span></span><span style="color: #008000;"><span style="color: #008000;">}</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;"></span> public</span> <span style="color: #008000;"><span style="color: #008000;">{</span></span><span style="color: #008000;">public <span style="color: #008000;">declarations</span></span><span style="color: #008000;"><span style="color: #008000;">}</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">End</span></span><span style="color: #000000;"><span style="color: #000000;">;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">var</span></span><span style="color: #000000;"><span style="color: #000000;">form3:tform3;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Const</span></span><span style="color: #000000;"><span style="color: #000000;">get_string</span></span>=<span style="color: #800080;"><span style="color: #800080;">1234</span></span><span style="color: #000000;"><span style="color: #000000;">; Service_string</span></span>=<span style="color: #800080;"><span style="color: #800080;">4321</span></span><span style="color: #000000;"><span style="color: #000000;">;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Implementation</span></span><span style="color: #008000;"><span style="color: #008000;">{</span></span><span style="color: #008000;"><span style="color: #008000;">$R *.FMX</span></span><span style="color: #008000;"><span style="color: #008000;">}</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">uses</span></span><span style="color: #000000;"><span style="color: #000000;">androidapi.helpers, Androidapi.JNI.JavaTypes, Androidapi.JNI.Widget;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">procedure</span></span><span style="color: #000000;"><span style="color: #000000;">Tform3.button1click (sender:tobject);</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">begin</span></span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Binding Service</span></span><span style="color: #000000;"><span style="color: #000000;">Fserviceconnection.bindservice (</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">APK name containing the service</span></span> <span style="color: #800000;"><span style="color: #800000;">'</span></span><span style="color: #800000;"><span style="color: #800000;">Com.embarcadero.xalionhostapp</span></span><span style="color: #800000;"><span style="color: #800000;">'</span></span><span style="color: #000000;"><span style="color: #000000;">, </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">service Name-always starts with "com.embarcadero.services"</span></span> <span style="color: #800000;"><span style="color: #800000;">'</span></span><span style="color: #800000;"><span style="color: #800000;">Com.embarcadero.services.xalionremoteservice</span></span><span style="color: #800000;"><span style="color: #800000;">'</span></span><span style="color: #000000;"><span style="color: #000000;">);</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">End</span></span><span style="color: #000000;"><span style="color: #000000;">;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">procedure</span></span><span style="color: #000000;"><span style="color: #000000;">Tform3.button2click (sender:tobject);</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">begin</span></span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;"></span> unbind</span> <span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>Fserviceconnection <><span style="color: #0000ff;"><span style="color: #0000ff;">Nil</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;"></span> then</span><span style="color: #000000;"><span style="color: #000000;">fserviceconnection.unbindservice; Getdatabutton.enabled:</span></span>=<span style="color: #000000;"><span style="color: #000000;">False;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">End</span></span><span style="color: #000000;"><span style="color: #000000;">;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">procedure</span></span><span style="color: #000000;"><span style="color: #000000;">tform3.formcreate (sender:tobject);</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">begin</span></span> <span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Initializing the service connection</span></span>Fserviceconnection: = Tremoteserviceconnection.<span style="color: #0000ff;"><span style="color: #0000ff;">Create</span></span><span style="color: #000000;"><span style="color: #000000;">; Fserviceconnection.onconnected:</span></span>=<span style="color: #000000;"><span style="color: #000000;">onserviceconnected; Fserviceconnection.onhandlemessage:</span></span>=<span style="color: #000000;"><span style="color: #000000;">onhandlemessage;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">End</span></span><span style="color: #000000;"><span style="color: #000000;">;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">procedure</span></span><span style="color: #000000;"><span style="color: #000000;">Tform3.formdestroy (sender:tobject);</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">begin</span></span><span style="color: #000000;"><span style="color: #000000;">fserviceconnection.free;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">End</span></span><span style="color: #000000;"><span style="color: #000000;">;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">procedure</span></span><span style="color: #000000;"><span style="color: #000000;">Tform3.getdatabuttonclick (sender:tobject);</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">var</span></span><span style="color: #000000;"><span style="color: #000000;">lmessage:jmessage;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">begin</span></span><span style="color: #000000;"><span style="color: #000000;">lmessage:</span></span>= TJMessage.JavaClass.obtain (<span style="color: #0000ff;"><span style="color: #0000ff;">Nil</span></span><span style="color: #000000;"><span style="color: #000000;">, get_string); Lmessage.replyto:</span></span>=<span style="color: #000000;"><span style="color: #000000;">fserviceconnection.localmessenger; FServiceConnection.ServiceMessenger.send (lmessage);</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">End</span></span><span style="color: #000000;"><span style="color: #000000;">;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">procedure</span></span>Tform3.onhandlemessage (<span style="color: #0000ff;"><span style="color: #0000ff;">Const</span></span><span style="color: #000000;"><span style="color: #000000;">amessage:jmessage);</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">var</span></span><span style="color: #000000;"><span style="color: #000000;">lstr:jstring; lbundle:jbundle;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">begin</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;"></span> case</span>Amessage.what<span style="color: #0000ff;"><span style="color: #0000ff;"></span> of</span><span style="color: #000000;"><span style="color: #000000;">service_string:</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">begin</span></span><span style="color: #000000;"><span style="color: #000000;">lbundle:</span></span>=<span style="color: #000000;"><span style="color: #000000;">Tjbundle.wrap (amessage.obj); Lstr:</span></span>= Lbundle.getstring (tandroidhelper.stringtojstring (<span style="color: #800000;"><span style="color: #800000;">'</span></span><span style="color: #800000;"><span style="color: #800000;">Key</span></span><span style="color: #800000;"><span style="color: #800000;">'</span></span><span style="color: #000000;"><span style="color: #000000;">)); TJToast.JavaClass.makeText (tandroidhelper.context, lstr.subsequence (</span></span><span style="color: #800080;"><span style="color: #800080;">0</span></span><span style="color: #000000;"><span style="color: #000000;">, lstr.length), TJToast.JavaClass.LENGTH_SHORT). show; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">End</span></span><span style="color: #000000;"><span style="color: #000000;">; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">Else</span></span><span style="color: #000000;"><span style="color: #000000;">FServiceConnection.Handler.Super.handleMessage (amessage); </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">End</span></span><span style="color: #000000;"><span style="color: #000000;">;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">End</span></span><span style="color: #000000;"><span style="color: #000000;">;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">procedure</span></span>Tform3.onserviceconnected (<span style="color: #0000ff;"><span style="color: #0000ff;">Const</span></span><span style="color: #000000;"><span style="color: #000000;">servicemessenger:jmessenger);</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">begin</span></span><span style="color: #000000;"><span style="color: #000000;">getdatabutton.enabled:</span></span>=<span style="color: #000000;"><span style="color: #000000;">True;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">End</span></span><span style="color: #000000;"><span style="color: #000000;">;</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">End</span></span>.</pre><p><p></p></p><p><p>compile, Run.<br>Point binding service, strange, How to get the data do not come out, but there is a "program unresponsive" is closed?</p></p><p><p>Alas. again, Comrade EMB's Low-level Mistake.</p></p><p><p>Manual mode, Open the main program's directory.</p></p><p><p></p></p><p><p>Open this file</p></p><p><p></p></p><p><p>To replace this with</p></p><p><p><service android:exported= "true" android:name= "com.embarcadero.services.xalionremoteservice"/></p></p><p><p></p></p><p><p></p></p><p><p></p></p><p><p>Recompile the running main Program.</p></p><p><p>Now run the extension again. What's up, ok?</p></p><p><p></p></p><p><p></p></p><p><p></p></p><p><p></p></p><p><p></p></p> <p><p></p></p><p><p>Delphi Seattle Android Service Development (iii)</p></p></span>