• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于DataSnap技術(shù)的大學(xué)城商圈安卓APP的設(shè)計與實現(xiàn)*

      2018-05-22 03:50:00吳順利史國濱
      計算機時代 2018年5期
      關(guān)鍵詞:窗體客戶端分類

      吳順利,張 旭,孫 偉,史國濱

      (黑龍江八一農(nóng)墾大學(xué),黑龍江 大慶 163319)

      0 引言

      移動互聯(lián)時代,移動終端成為大眾獲取富媒體信息的主要手段,手機中APP應(yīng)用成為大眾獲取信息的主要途徑之一。大學(xué)城商圈娛樂設(shè)施完備,文化飲食和公共文化活躍。充分發(fā)掘此地域圈內(nèi)人員活動信息可積累大量可用信息。這些信息對實現(xiàn)目標(biāo)人群精準(zhǔn)導(dǎo)向,提高商圈活躍度,提升公共服務(wù)質(zhì)量會有很大幫助。目前大多數(shù)手機APP研究集中在如軟件需求分析[1-2]、界面設(shè)計[3-4]、某一領(lǐng)域需要[5-7],而對實現(xiàn)相關(guān)應(yīng)用技術(shù)細(xì)節(jié)的文獻(xiàn)[8-10]較少。

      手機APP程序需要建立服務(wù)器平臺,開發(fā)手機端軟件功能。如何實現(xiàn)快速開發(fā),需有一套完整高效的解決方案。本文運用Rest DATASNAP技術(shù),采用跨平臺開發(fā)工具DELPHI XE10[11]實現(xiàn)高效的手機軟件開發(fā)。目標(biāo)是開發(fā)覆蓋商圈內(nèi)商家及公共服務(wù)設(shè)施手機端APP。通過DATASNAP技術(shù)以短連接方式,可滿足數(shù)千用戶的并發(fā)連接,滿足實際的應(yīng)用需要。

      本手機APP實現(xiàn)了分類信息存儲及顯示、商圈設(shè)施定位、顯示詳細(xì)信息,異步更新提高交互性體驗、用戶信息收集等功能。

      1 服務(wù)器端的開發(fā)

      系統(tǒng)架構(gòu)如圖1所示,數(shù)據(jù)庫存儲采用開源數(shù)據(jù)庫MYSQL,通過在數(shù)據(jù)庫中設(shè)計地域分類數(shù)據(jù)表、商家大類和子類分類數(shù)據(jù)表、商品信息數(shù)據(jù)表、用戶表、訪問信息表等實現(xiàn)按地域、地理坐標(biāo)、商品分類、商品名稱、用戶關(guān)注度等多級信息的分類顯示,通過存儲訪問信息表,存儲如IP、位置、手機信息、訪問興趣點信息等,可在用戶積累到一定規(guī)模后建立大數(shù)據(jù)信息源,為更加精準(zhǔn)的數(shù)據(jù)服務(wù)提供支持。以DELPHI快速建立DATASNAP server三層結(jié)構(gòu)??蛻舳伺c服務(wù)器間采用REST方式連接DATASNAP Server并訪問目標(biāo)mysql數(shù)據(jù)庫。服務(wù)器以TCP/IP短連接方式,通過sqlquery實現(xiàn)接收來自互聯(lián)網(wǎng)的客戶端特定的數(shù)據(jù)庫查詢指令,并通過datasetprovider提供遠(yuǎn)程數(shù)據(jù)訪問服務(wù),可滿足數(shù)百至上千用戶的并發(fā)連接。與其他開發(fā)方案比較[8,12],服務(wù)器端程序通用簡化、開發(fā)快速,服務(wù)器端在同樣并發(fā)訪問量下負(fù)荷較小,可提供更多用戶的同時訪問能力,整體技術(shù)方案可靠、高效,相較其他方案更易于實現(xiàn)。

      圖1 系統(tǒng)架構(gòu)

      2 安卓系統(tǒng)客戶端程序

      2.1 啟動畫面定制及主界面開發(fā)

      客戶端功能如圖2所示。

      圖2 客戶端功能

      啟動畫面為手機端程序的流行方式,主窗體通過菜單提供多個不同分類顯示。各詳細(xì)信息窗體顯示如:特定分類信息、興趣點具體信息等。為使手機APP適合各尺寸分辨率的手機,在窗體設(shè)計中采用ScaledLayout布局方案,并通過動態(tài)獲取窗體尺寸完成頁面對象自適應(yīng)布局處理。通過自定義窗體顯示內(nèi)容實現(xiàn)啟動畫面并通過在啟動窗體中使用application.createform 方法,將主界面顯示至前臺并將啟動畫面運用destroy方法銷毀處理。其代碼如下:

      Application.CreateForm(TMainform,Mainform);

      Mainform.SendToBack;

      Mainform.Show;

      Mainform.BringToFront;

      Mainform.Activate;

      Application.MainForm:=Mainform;

      Splashform.destroy;

      圖3 主界面

      圖4 分類顯示頁

      主界面圖3底部菜單分類顯示以tabcontrol控件實現(xiàn),為增強過渡動畫效果,在圖片按鈕區(qū)添加BitmapAnimation控件,定義開始和結(jié)束圖片,當(dāng)點擊菜單圖片時觸發(fā)動畫過渡切換至其他頁面,從而提供更友好的訪問體驗。

      2.2 主窗體中可觸摸輪換圖片實現(xiàn)

      輪換圖片是在程序中建立tabcontrol多標(biāo)簽頁顯示不同圖片,通過定義timer定時器自動將當(dāng)前的activetab頁自加,并在顯示最后一個標(biāo)簽頁時將activetab值設(shè)定為tabs[0],從而自動循環(huán)。手機中最重要的交互功能就是手勢,通過在tabcontrol中onGesture識別手勢的兩種類型sgiLeft、sgiRight并改變activetab值實現(xiàn)跟隨手勢切換頁面。由右向左滑動部分代碼如下:

      case EventInfo.GestureID of sgiLeft:

      if SlideImg.ActiveTab<>SlideImg.Tabs[SlideImg.TabCount-1]

      then begin

      SlideImg.ActiveTab=SlideImg.Tabs[SlideImg.TabIndex+1]

      else begin SlideImg.ActiveTab:=SlideImg.Tabs[0];

      ……

      APP程序中另一個最重要的內(nèi)容是,顯示所需的圖文信息,這些信息存儲在遠(yuǎn)端的數(shù)據(jù)庫服務(wù)器中,通過用戶點擊、分類篩選,提供定制化的信息。如圖4,客戶端多以listview來顯示用戶篩選信息,通常定義客戶端數(shù)據(jù)庫連接單元的方式實現(xiàn)。圖5數(shù)據(jù)訪問方式,是客戶端通過建立sqlconnection連接遠(yuǎn)端的DATASNAP服務(wù)器,以Dsprovider連接遠(yuǎn)端DATASNAPserver特定的ServerMethod類,以ClientDataSet接收遠(yuǎn)端服務(wù)器的數(shù)據(jù)流。通過ClientDataSet.CommandText執(zhí)行特定數(shù)據(jù)查詢并返回結(jié)果。通過手勢上下拉加載分頁后的數(shù)據(jù),采用更改動態(tài)查詢數(shù)據(jù)起始序號的方式,設(shè)置ListView的OnMouseUp和OnPullRefresh事件來響應(yīng)上拉和下拉手勢完成數(shù)據(jù)動態(tài)分頁更新,采用此方法可有效降低網(wǎng)絡(luò)數(shù)據(jù)傳輸量,并可減少由于查詢并響應(yīng)所需時間造成的用戶長時間等待,提升用戶體驗。

      圖5 數(shù)據(jù)訪問方式

      Listview中顯示圖片和文本信息是APP中常采取的方法,由于網(wǎng)絡(luò)的原因,如果圖片信息同樣存儲在數(shù)據(jù)庫中將會隨著數(shù)據(jù)庫信息量的增加,其訪問時長會受到較大影響,為提高交互訪問體驗,采用了以下方法。①數(shù)據(jù)庫中僅存儲圖片網(wǎng)絡(luò)地址的形式,當(dāng)手機端訪問時借助遠(yuǎn)端DATASNAP Server訪問數(shù)據(jù)庫并提供給手機端,手機端APP按照所獲取的圖片地址去訪問并顯示在手機端,這在一定程度上降低了服務(wù)器的負(fù)荷,可提供更多、更流暢的客戶訪問體驗。②在手機端通過異步的方法同時獲取接收到的多個圖片,并顯示在手機端,使手機端訪問體驗更佳。③為進(jìn)一步提供訪問的實時交互性,可將訪問的圖片進(jìn)行預(yù)處理,將圖片按照訪問需要存儲成不同尺寸的文件以加快訪問速度。④圖片異步訪問通過建立圖片訪問的類,以匿名線程的方法,通過idhttp組件獲取圖片數(shù)據(jù)流并顯示在listview中,防止主窗體假死現(xiàn)象。在異步顯示圖片中,設(shè)計預(yù)加載圖片,預(yù)加載圖片以圖片流形式保存為全局變量,在加載網(wǎng)絡(luò)圖片前加載顯示在相應(yīng)圖片區(qū),在加載網(wǎng)絡(luò)圖片后被替換,這使得顯示效果更加理想。⑤在程序中做容錯處理,合理利用try except可防止由于網(wǎng)絡(luò)不穩(wěn)定、訪問異常等造成的程序崩潰事件的發(fā)生。通過以上方式,可在上下拉后頁面得到快速更新,效果良好。

      2.3 POI信息的實現(xiàn)

      POI(point of interest)“興趣點”內(nèi)信息包括地理位置、名稱、附加圖片及文字信息描述等。各興趣點信息可采用傳統(tǒng)人工實地采集地理坐標(biāo)、現(xiàn)場拍照、人工分類獲取1手信息,也可采用自動化采集手段,例如通過采集軟件“火車頭”、“八爪魚”[13]等,通過自定義規(guī)則,進(jìn)行如美團(tuán)網(wǎng)、大眾點評網(wǎng)等分類數(shù)據(jù)提取并進(jìn)行人工處理后導(dǎo)入數(shù)據(jù)庫中。其中最為重要的數(shù)據(jù)之一是地理坐標(biāo)信息,美團(tuán)網(wǎng)采用騰訊地圖,人工實地采集采用GPS坐標(biāo),各坐標(biāo)系統(tǒng)不同,定位精準(zhǔn)度和位置偏差較大,可采用坐標(biāo)轉(zhuǎn)換工具進(jìn)行統(tǒng)一轉(zhuǎn)換[14]。由于多種原因可能造成數(shù)據(jù)準(zhǔn)確度不足,本APP實現(xiàn)采用百度地圖方案,將各種方法采集的坐標(biāo)通過開放的坐標(biāo)轉(zhuǎn)換工具轉(zhuǎn)換成百度坐標(biāo),并根據(jù)百度地圖中已知標(biāo)定的幾個目標(biāo)興趣點,通過建立一元線性方程進(jìn)行坐標(biāo)修正,保證在特定小范圍區(qū)域內(nèi)偏差在10幾米的精度范圍。

      在手機APP中采用了webbrowser結(jié)合baidu javascript api混合實現(xiàn)手機端的定位與顯示。手機的實時定位以LocationSensor進(jìn)行g(shù)ps及wifi雙方式的自動獲取,并以此方式獲取的位置信息做為查詢數(shù)據(jù)庫獲得周邊信息的位置定界。各“興趣點”的多張圖片信息的顯示,可通過動態(tài)獲得手機尺寸,自適應(yīng)生成圖片列表。除采用異步方式獲取網(wǎng)絡(luò)圖片外,當(dāng)點擊某張圖片時可以放大到手機全屏并實現(xiàn)放大、旋轉(zhuǎn)等操作。其實現(xiàn)是通過定義窗體的OnGesture事件,在igiRotate和igiZoom中實現(xiàn)。通過Self.ObjectAtPoint(ClientToScreen(EventInfo.Location))獲取圖片對象并控制圖片做旋轉(zhuǎn)及放大處理。其部分代碼如下:

      LObj:=Self.ObjectAtPoint(ClientToScreen(EventInfo.Location));

      if LObj is TImage then begin {rotate the image}

      LImage:=TImage(LObj.GetObject);

      if(TInteractiveGestureFlag.gfBegin in EventInfo.Flags)

      then FLastAngle:=LImage.RotationAngle

      else if EventInfo.Angle<>0

      then LImage.RotationAngle:=

      FLastAngle-(EventInfo.Angle*180)/Pi;

      2.4 用戶信息獲取

      獲取用戶信息,如手機廠商、型號、IMEI、安卓版本、位置信息、訪問信息點等是進(jìn)行數(shù)據(jù)深度挖掘的基礎(chǔ),通過調(diào)用androidapi.JNI.JavaTypes,Androidapi.Helpers,androidapi.JNI.Os;并調(diào)用TJBuild.JavaClass.MODEL、TJBuild_VERSION.JavaClass.RELEASE、TJBuild_VERSION.JavaClass.RELEASE可獲取到設(shè)備相關(guān)信息,通過執(zhí)行sql insert命令將信息存儲于遠(yuǎn)端數(shù)據(jù)庫,對用戶登錄后訪問的興趣點信息進(jìn)行記錄和傳回服務(wù)器端,實現(xiàn)用戶端信息采集做為大數(shù)據(jù)信息源,為后繼精細(xì)化數(shù)據(jù)服務(wù)提供支持。

      3 結(jié)束語

      本文運用Delphi跨平臺開發(fā)工具,以Rest DATASNAP技術(shù)開發(fā)多層架構(gòu)手機APP平臺,詳細(xì)描述了系統(tǒng)整體結(jié)構(gòu)和技術(shù)實現(xiàn)。采用以上的設(shè)計思想,可滿足中小型用戶量的手機APP應(yīng)用需要,在開發(fā)周期、易用性、安全可靠能力上都滿足需要,解決了手機APP開發(fā)整體方案中技術(shù)難點及實現(xiàn)細(xì)節(jié)參考資料缺乏的不足,是開發(fā)互聯(lián)網(wǎng)環(huán)境下手機APP的一套快速開發(fā)的成熟解決方案。

      參考文獻(xiàn)(References):

      [1]劉丹,胡衛(wèi)星,李玉斌,李暢.移動教育APP的研發(fā)現(xiàn)狀與應(yīng)用問題分析[J].電化教育研究,2016.8:47-52

      [2]馬玉慧,趙樂,李南南,王碩爍.新型移動學(xué)習(xí)資源——教育APP發(fā)展模式探究[J].中國電化教育,2016.4:64-70

      [3]譚坤,劉正宏,李穎“.非遺”傳承創(chuàng)新語境下的APP界面設(shè)計研究[J].包裝工程,2015.8:60-3,115

      [4]鄭文靜,殷俊.基于O2O模式的外賣訂餐APP的設(shè)計研究[J].藝術(shù)與設(shè)計(理論),2015.9:101-3

      [5]陳俊杰,黃國凡.移動圖書館APP的構(gòu)建策略和關(guān)鍵技術(shù)——以iOS為例[J].現(xiàn)代圖書情報技術(shù),2012.9:75-80

      [6]楊艷妮,明均仁,張杰.基于Android的移動圖書館APP功能設(shè)計與實現(xiàn)[J].圖書館學(xué)研究,2015.7:24-30,23

      [7]周宇,尹生強,王冬青,王英杰.基于Eclipse和Android系統(tǒng)的App開發(fā)平臺搭建研究[J].青島大學(xué)學(xué)報(工程技術(shù)版),2016.3:49-53

      [8]黃悅深.基于HTML5的移動Web App開發(fā)[J].圖書館雜志,2014.7:72-7

      [9]張言林,李博,王文博,張財學(xué),張劉通.基于數(shù)字化校園的手機app客戶端設(shè)計初探——東北林業(yè)大學(xué)“移動校園”手機APP客戶端設(shè)計[J].設(shè)計,2014.2:81-2

      [10]張利軍.智能手機APP應(yīng)用前景及發(fā)展瓶頸探析[J].電子技術(shù)與軟件工程,2015.10:69

      [11]高勇.Delphi XE6 Android編程入門教程[M].西安出版社,2014.

      [12]韓文智,駱文亮.Android平臺的移動APP開發(fā)方法與應(yīng)用研究[J].四川理工學(xué)院學(xué)報(自然科學(xué)版)2015.3:22-6

      [13]崔玉潔,廖坤.借助八爪魚采集器實現(xiàn)過刊網(wǎng)刊元數(shù)據(jù)的自動提取[J].編輯學(xué)報,2016.5:485-8

      [14]姜楠.坐標(biāo)轉(zhuǎn)換算法研究與軟件實現(xiàn)[D].安徽理工大學(xué)碩士學(xué)位論文,2013.

      猜你喜歡
      窗體客戶端分類
      分類算一算
      試談Access 2007數(shù)據(jù)庫在林業(yè)檔案管理中的應(yīng)用
      檔案天地(2019年5期)2019-06-12 05:12:02
      分類討論求坐標(biāo)
      縣級臺在突發(fā)事件報道中如何應(yīng)用手機客戶端
      傳媒評論(2018年4期)2018-06-27 08:20:24
      孵化垂直頻道:新聞客戶端新策略
      傳媒評論(2018年4期)2018-06-27 08:20:16
      數(shù)據(jù)分析中的分類討論
      基于Vanconnect的智能家居瘦客戶端的設(shè)計與實現(xiàn)
      電子測試(2018年10期)2018-06-26 05:53:34
      教你一招:數(shù)的分類
      基于LayeredWindow的異形窗體局部刷新
      中文信息(2014年2期)2014-03-06 23:49:14
      巧設(shè)WPS窗體控件讓表格填寫更規(guī)范
      务川| 岳阳县| 青神县| 班戈县| 平邑县| 湖南省| 阿图什市| 杂多县| 防城港市| 呼和浩特市| 灌云县| 镇雄县| 彩票| 宜良县| 河源市| 和田市| 原平市| 铜梁县| 余干县| 塔河县| 维西| 洛阳市| 四平市| 扎囊县| 峡江县| 临澧县| 鱼台县| 湛江市| 梨树县| 渑池县| 武乡县| 灵台县| 桦川县| 铜鼓县| 陆川县| 神农架林区| 子洲县| 五家渠市| 潞城市| 临安市| 焉耆|