1 unit secondform;
2 
3 {$mode objfpc}{$H+}
4 
5 {$ifdef Linux}{$ifdef CPUARM}
6   {$define Android}
7 {$endif}{$endif}
8 
9 interface
10 
11 uses
12   Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
13   ComCtrls, ExtCtrls, LCLType, LCLProc, lazdeviceapis;
14 
15 type
16 
17   { TForm2 }
18 
19   TForm2 = class(TForm)
20     Button1: TButton;
21     btnStartAccel: TButton;
22     btnStopAccel: TButton;
23     btnGetPos: TButton;
24     btnSendSMS: TButton;
25     Button2: TButton;
26     Button3: TButton;
27     textDest: TEdit;
28     textBody: TEdit;
29     Image1: TImage;
30     Label1: TLabel;
31     Label2: TLabel;
32     labelSensorData: TLabel;
33     procedure btnSendSMSClick(Sender: TObject);
34     procedure Button1Click(Sender: TObject);
35     procedure btnStartAccelClick(Sender: TObject);
36     procedure btnStopAccelClick(Sender: TObject);
37     procedure btnGetPosClick(Sender: TObject);
38     procedure Button2Click(Sender: TObject);
39     procedure Button3Click(Sender: TObject);
40     procedure textDestExit(Sender: TObject);
41     procedure textDestKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
42     procedure textDestKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
43     procedure textDestUTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char);
44   private
45     { private declarations }
46   public
47     { public declarations }
48     procedure HandleAccelerometerChanged(Sender: TObject);
49     procedure HandlePositionRetrieved(Sender: TObject);
50     procedure HandleMessagingStatus(AMessage: TLazDeviceMessage;
51       AStatus: TLazMessagingStatus);
52   end;
53 
54 var
55   Form2: TForm2;
56 
57 implementation
58 
59 uses
60   {$ifdef LCLCustomDrawn}
61   customdrawnint,
62   {$endif}
63   TypInfo, mainform;
64 
65 {$R *.lfm}
66 
67 { TForm2 }
68 
69 procedure TForm2.Button1Click(Sender: TObject);
70 begin
71   Hide;
72 end;
73 
74 procedure TForm2.btnSendSMSClick(Sender: TObject);
75 var
76   lMessage: TLazDeviceMessage;
77 begin
78   Messaging.OnMessagingStatus := @HandleMessagingStatus;
79   lMessage := Messaging.CreateMessage();
80   lMessage.Body := textBody.Text;
81   lMessage.destinationAddress.Text := textDest.Text;
82   DebugLn('[TForm2.btnSendSMSClick] dest='+textDest.Text);
83   Messaging.SendMessage(lMessage);
84 end;
85 
86 procedure TForm2.btnStartAccelClick(Sender: TObject);
87 begin
88   Accelerometer.OnSensorChanged := @HandleAccelerometerChanged;
89   Accelerometer.StartReadingAccelerometerData();
90 end;
91 
92 procedure TForm2.btnStopAccelClick(Sender: TObject);
93 begin
94   Accelerometer.StopReadingAccelerometerData();
95 end;
96 
97 procedure TForm2.btnGetPosClick(Sender: TObject);
98 begin
99   PositionInfo.RequestPositionInfo(pmGPS);
100   PositionInfo.OnPositionRetrieved := @HandlePositionRetrieved;
101 end;
102 
103 procedure TForm2.Button2Click(Sender: TObject);
104 var
105   lStr: string;
106 begin
107   lStr := Form1.LoadHTMLPageViaJNI('http://magnifier.sourceforge.net/');
108 end;
109 
110 procedure TForm2.Button3Click(Sender: TObject);
111 begin
112   {$ifdef Android}
113   CDWidgetSet.ShowListViewDialog('Dialog Title',
114     ['Title1', 'Title2', 'Title3', 'Title4', 'Title5', 'Title6'],
115     ['Descr1', 'Descr2', 'Descr3', 'Descr4', 'Descr5', 'Descr6']);
116   {$endif}
117 end;
118 
119 procedure TForm2.textDestExit(Sender: TObject);
120 begin
121   DebugLn('[Edit1Exit]');
122 end;
123 
124 procedure TForm2.textDestKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
125 begin
126   DebugLn('[Edit1KeyDown] Key=' + DbgsVKCode(Key));
127 end;
128 
129 procedure TForm2.textDestKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
130 begin
131   DebugLn('[Edit1KeyUp] Key=' + DbgsVKCode(Key));
132 end;
133 
134 procedure TForm2.textDestUTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char);
135 begin
136   DebugLn('[Edit1UTF8KeyPress] Char=' + UTF8Key);
137 end;
138 
139 procedure TForm2.HandleAccelerometerChanged(Sender: TObject);
140 begin
141   labelSensorData.Caption := Format('X=%f Y=%f Z=%f', [Accelerometer.xaxis,
142     Accelerometer.yaxis, Accelerometer.zaxis]);
143   DebugLn(labelSensorData.Caption);
144 end;
145 
146 procedure TForm2.HandlePositionRetrieved(Sender: TObject);
147 begin
148   labelSensorData.Caption := Format('latitude=%f longitude=%f',
149     [PositionInfo.latitude, PositionInfo.longitude]);
150   DebugLn(labelSensorData.Caption);
151 end;
152 
153 procedure TForm2.HandleMessagingStatus(AMessage: TLazDeviceMessage;
154   AStatus: TLazMessagingStatus);
155 begin
156   labelSensorData.Caption := '[HandleMessagingStatus] ' +
157     GetEnumName(TypeInfo(TLazMessagingStatus), integer(AStatus));
158   DebugLn(labelSensorData.Caption);
159 end;
160 
161 end.
162 
163