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