Delphi Seattle Android Service Development (iii)

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>

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.