標籤:
從delphi 開始支援安卓的開發開始, 安卓service 開發一直都是delphier 繞不過去的坎,
以前也有開發service 的方法,但是都是手工處理開機檔案,而且要修改很多東西,基本上成功
的機率很低。
delphi 10 seattle(這個名字很特殊,與win10 一樣,直接跳過了9) 終於官方支援安卓service 開發了,
不知道現在現在開發安卓service 是不是很簡單?那麼就讓我們一探究竟。
首先,我們開啟已經扁平的不能再扁平delphi 10, 選擇建立一個其他項目。出現:
選擇第一個綠色機器人(不用想,都是android 的東西),點確認。進入下一圖:
選擇服務類型,不同的類型功能不太一樣,我在以後再介紹,今天先選第一個,從最簡單的開始。
點OK 後就產生一個工程。
我們把工程名改成我們喜歡的名字,然後單獨儲存到一個目錄(記住,是單獨儲存到一個目錄,主要的話要說幾遍來著?)。
注意名字。 然後放置一個控制項
uses Androidapi.JNI.App;function TAndroidServiceDM.AndroidServiceStartCommand(const Sender: TObject; const Intent: JIntent; Flags, StartId: Integer): Integer;begin LThread := TThread.CreateAnonymousThread(procedure begin while true do begin sleep(10000); DoNotification; end; end); LThread.FreeOnTerminate := False; LThread.Start; Result := TJService.JavaClass.START_STICKY; // 保持服務運行end; procedure TAndroidServiceDM.DoNotification; var MyNotification: TNotification;beginMyNotification := NotificationCenter1.CreateNotification; try MyNotification.Name := ‘xalion‘; MyNotification.Title := ‘時間到了‘+formatdatetime(‘yyyy-mm-dd hh:nn:sss‘,now); MyNotification.AlertBody := ‘懶人都要起床了‘; MyNotification.FireDate:=now; NotificationCenter1.PresentNotification(MyNotification); finally MyNotification.Free; end;
OK, 點buider 工程,肯定不是 運行了。因為他是一個so, 肯定跑不起。
現在我們建立一個標準的主程式, 當然是FMX 得了,如果你要建立VCL 的應用的話,那我建議你去看一下精神病科醫生。
前面說了,一定要儲存到另外一個目錄。
視窗如下
並輸入以下代碼
type Tmainf = class(TForm) Label1: TLabel; Button1: TButton; NotificationCenter1: TNotificationCenter; Memo1: TMemo; procedure Button1Click(Sender: TObject); procedure NotificationCenter1ReceiveLocalNotification(Sender: TObject; ANotification: TNotification); private { Private declarations } FService: TLocalServiceConnection; public { Public declarations } end;var mainf: Tmainf;implementation{$R *.fmx}procedure Tmainf.Button1Click(Sender: TObject);begin Fservice:= TLocalServiceConnection.Create; FService.StartService(‘xalionservice‘);end;procedure Tmainf.NotificationCenter1ReceiveLocalNotification(Sender: TObject; ANotification: TNotification);begin TThread.Queue(nil, procedure begin memo1.Lines.Add( ANotification.AlertBody); end);end;
工程如下
在 黑體的上面滑鼠右鍵,然後選add android service.
出現下一個視窗
選擇剛才的服務應用的目錄。
繼續下去就可以了
完了以後,看看工程檔案
再看看發佈頁面確保這兩個檔案正確存在。 剩下還要幹什嗎?當然是編譯運行了呀。 點運行服務。退出程式等十秒鐘 "咚""咚""叮"手機響起來了左上方出來了一個火苗表徵圖。讓我們看看是什嗎? 懶人都起床了 再點一下,就回到了我們的主程式
第一個服務就這樣了。不知道算不算簡單?
反正是基本上折騰了一天。
什麼手機還在每隔10秒叫一次,當然了。為什麼,有代碼有真相,自己看吧。
一直停不下來,怎麼辦,很簡單呀,把這個應用刪掉,就不叫了:)
今天犧牲了一天吹牛的時間,終於把這個搞完了。
後面有空再寫別的吧。
delphi 10 seattle 安卓服務開發(一)