999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Android 的車輛遠程控制APP①

2020-03-23 06:04:38白云偉李麗萍
計算機系統應用 2020年2期
關鍵詞:頁面指令用戶

白云偉, 李麗萍

(上海第二工業大學 計算機與信息工程學院, 上海 201209)

汽車行業飛速發展, 生活越來越便利, 用戶對汽車服務的要求越來越高, 近幾年隨著新能源車步入市場,新能源車系列也受到越來越多人的青睞.物聯網時代,本著萬物互聯的暢想, 手機和車機互聯也隨之而生, 能夠運用手機APP 來遠程控制車輛成為用戶的迫切需求.

遠程控制APP 利用實時通信技術, 以頁面圖標呈現的方式供用戶實時查看車輛狀態參數, 并且用戶可以根據需要進行遠程開關空調, 遠程開關車門, 遠程定位車輛, 個性化設置, 以及遠程召喚車輛和車外自動泊車等操作.

1 APP 開發環境及應用技術

1.1 開發環境

遠程控制APP 用Android Studio 3.0 作為開發平臺, 服務器采用XMPP 通信協議實時通信和MySQL數據庫進行數據操作.

Android Studio 是Google 推出的一個Android 集成開發工具, 基于IntelliJ IDEA, 類似Eclipse ADT,Android Studio 提供了集成的Android 開發工具用于開發和調試.開發者可以在編寫程序的同時看到自己的應用在不同尺寸屏幕中的樣子.Android 是一種基于Linux 的自由及開放源代碼的操作系統, 主要使用于移動設備, 如智能手機和平板電腦.Android 操作系統有4 層架構, 從高層到低層分別是應用程序層、應用程序框架層、系統運行層和Linux 內核層[1].Android 有4 大組件: Activity, Service, BroadcastReceiver 和ContentProvider.

可擴展消息處理現場協議XMPP (eXtensible Messaging and Presence Protocol)是一種基于可擴展標記語言(eXtensible Markup Language, XML)的近端串流式即時通信協議.XMPP 中定義了3 個角色, 客戶端, 服務器, 網關.通信能夠在這三者的任意兩個之間雙向發生.服務器同時承擔了客戶端信息記錄, 連接管理和信息的路由功能.網關承擔著與異構即時通信系統的互聯互通, 異構系統可以包括SMS (短信), MSN, ICQ 等.基本的網絡形式是單客戶端通過TCP/IP 連接到單服務器, 然后在之上傳輸XML.XMPP 協議的優點: 分布式, 安全, 可擴展, 彈性佳, 多樣性, 分布式的網絡架構[2].

數據庫系統MySQL 所使用的SQL 語言是用于訪問數據庫的最常用標準化語言.MySQL 軟件采用了雙授權政策, 分為社區版和商業版, 由于其體積小、速度快、總體擁有成本低, 尤其是開放源碼這一特點, 一般中小型網站的開發都選擇MySQL 作為網站數據庫[3].

1.2 應用技術

在該APP 中, 采用JSON 格式的數據封裝到XMPP 協議里進行通信, 并用高德地圖提供聯想搜索和導航功能, 采用GPS 技術獲取車輛位置, 便于查找和遠程召喚車輛, 并利用Android 的Service 功能保持APP 后臺運行, 然后采用極光推送平臺進行消息推送.

JSON (Java Script Object Notation)是一種輕量級的數據交換格式.它是基于ECMAScript (歐洲計算機協會制定的js 規范)的一個子集[4], 采用完全獨立于編程語言的文本格式來存儲和表示數據.簡潔和清晰的層次結構使得JSON 成為理想的數據交換語言.易于人閱讀和編寫, 同時也易于機器解析和生成, 并有效地提升網絡傳輸效率.

高德地圖開放平臺為Android 系統所提供的服務包含地圖、定位、導航、搜索、路徑規劃、室內地圖[5]等.該APP 通過加載高德地圖SDK 主要用到POI 聯想搜索和導航功能.

利用GPS 定位衛星, 在全球范圍內實時進行定位、導航的系統, 稱為全球衛星定位系統, 簡稱GPS[6].遠程車輛定位功能調用手機的GPS 和車機的GPS, 來進行人與車的定位和導航.

極光推送, 英文簡稱JPush, 是一個面向普通開發者開放的, 免費的第三方消息推送服務[7].開發者只需在客戶端集成極光推送SDK, 即可輕松地添加Push 功能到他的APP 中.該APP 運用極光推送API 實現車輛實時情況的消息推送.

2 分析與設計

2.1 需求分析

車輛遠程控制APP 的常規功能是注冊登錄功能,其他功能是根據一些場景一一對應設計出來的.(1)用手機控制車輛, 首先要知道控制哪輛車, 對應有綁定車輛功能; (2)用戶坐在自己家里想知道自己車的基本狀況, 如車內溫度, 空調開關情況, 車門是否上鎖, 胎溫胎壓是否異常等等, 對應有查看車輛狀態和故障報警功能; (3)用戶的車停在大型車庫, 要去取車時反復尋找但找不到自己的車, 這時用遠程找車功能, 可以快速找到愛車; (4)有些停車位比較難停, 對于新手司機停車是個大問題, 對應用遠程自動泊車功能; (5)用戶有時有事情又急于用車, 這時候希望車能夠自行開到指定位置, 應運而生遠程召喚功能; (6)用戶沒有打開APP,但此時車輛有故障或者電量過低, 手機會收到推送消息進行提示; (7)用戶有時忘帶車鑰匙, 但需要打開車門, 此時就需要遠程開車門功能; (8)夏天天氣炎熱, 車停在路邊導致車內溫度過高, 為了方便用戶能夠隨時上車, 可以使用遠程開空調功能提前給車內降溫.還有提供聯想搜索功能可以設置家庭和公司的地址, 提供導航功能等等.

與APP 對接的后臺監測系統需要完成以下幾個任務: (1)制定與APP 的接口; (2) APP 用戶注冊和登錄的賬號, 用戶名, 密碼管理; (3) APP 版本的升級; (4)管理車機ID, 找到對應的車機系統; (5)作為通信中轉站,轉發APP 與車機系統之間的通信數據, 并保存這些數據到數據庫.

2.2 總體設計

用戶通過Android 客戶端發送操控指令給后臺,后臺接收指令并將指令轉發給車機系統, 并在后臺數據庫保存指令消息.車機系統做出相應的處理并將處理結果通過后臺再傳給客戶端進行界面顯示或進行通知欄推送消息等.車機端安裝一個車機控制系統, 該系統會接收來自服務器的消息, 然后解析出用戶給的指令, 通過CAN 總線發送信號給車的XCU 部件, 然后X C U 做出相應的控制操作, 等待底層部件通過CAN 總線回復成功或失敗的信號后, 該車機系統再把該信號封裝成XMPP 協議的消息回復給服務器, 然后服務器解析出目的JID, 然后再把消息轉發給該DST JID.整體架構如圖1 所示.

圖1 整體架構圖

2.3 Android 客戶端APP 設計

車輛遠程控制APP 采用MVC 的架構設計模式,該模式可提高開發效率, 降低模塊間的耦合性.MVC 中的M (模型)是指獲取到的XMPP 協議所解析出來的JSON 數據.視圖層是每個XML 的布局文件main_activity.xml 等, 包括自定義的view.控制層是指APP 開發中的各個Activity 和Fragment, 如MainActivity,ErrorActivity, ParkActivity, PositionSelectActivity,VehicleBindActivity, LoginActivity 等.APP 的主頁面采用多個Fragment 嵌套在一個Activity 中的方式實現,使用Viewpager 來控制多個Fragment 的切換, 增加頁面切換靈活性.

車輛遠程控制APP 的主要功能有: APP 注冊和登錄, 車輛綁定, 車輛基本狀態顯示, 遠程開關車門, 遠程開關空調, 遠程尋車, 車外自動泊車, 車輛定位, 車輛遠程召喚和OTA 升級等等.

APP 的主要功能結構圖如圖2 所示.

圖2 車輛遠程控制APP 功能結構圖

2.4 后臺監測系統設計

后臺監測系統功能結構圖如圖3 所示.

圖3 后臺監測系統的功能結構圖

3 遠程控制APP 設計實現

3.1 注冊和登錄功能的實現

用戶打開APP 點擊注冊按鈕, 進入注冊頁面, 進行用戶名, 手機號和密碼的輸入, 然后通過Okhttp[8]網絡框架進行服務器請求將數據上傳到后臺, 后臺系統判斷該賬號是否已經被注冊過, 如果已經注冊過給出已注冊提示, 如果未注冊過寫入服務器, 給出注冊成功提示, 然后頁面跳轉到登錄界面, 在登錄界面輸入賬號密碼進行登錄, 登錄數據也通過Okhttp 進行服務器請求, 將賬號和密碼與后臺數據庫已經注冊的賬號密碼匹配, 如果存在并且密碼正確提示登錄成功, 如果不存在提示未注冊, 如果密碼不正確提示重新輸入, 登錄后進入車輛綁定界面.在登錄界面如果選中記住密碼, 則下次可以進入登錄界面可以直接點登錄, 不用再重新輸入.注冊和登錄流程圖如圖4 所示.

3.2 主界面的實現

主頁面由底部導航欄和車輛基本狀態兩部分組成,底部導航欄有3 部分組成, 分別是輪胎狀態Fragment,車輛基本狀況Fragment, 遠程控制Fragment, 3 個Fragment 可以用手指滑動進行切換.車輛基本狀態頁面主要顯示車內溫度, 剩余電量, 空調狀態和車門狀態,頁面左上角是個人信息設置, 右上角是故障報警.空調和車門鎖是兩個按鈕事件, 監聽按鈕點擊事件, 可以點擊這兩個按鈕通過XMPP 協議發送指令.XMPP 協議格式見表1.

輪胎狀態頁面顯示胎溫和胎壓的數據指標, 如有異常, 對應的輪胎會亮紅.遠程控制頁面有6 個按鈕事件組成, 對應著6 個功能, 下面會一一詳細介紹.主頁面效果圖如圖5 所示.

圖4 注冊和登錄流程圖

表1 XMPP 協議格式

3.3 遠程尋車, 遠程開空調, 遠程開車門

點擊遠程控制頁面的遠程尋車按鈕, ButtonListener監聽到該點擊事件, 即會通過XMPP 協議發送尋車指令給后臺, 后臺解析該消息頭, 找到車機JID, 然后把JSON 格式的MsgContents 繼續封裝進XMPP 消息, 發送給車機系統, 車機系統收到消息后就會控制車輛進行閃燈和鳴笛, 方便用戶尋找.遠程開空調功能類似遠程尋車, 點擊遠程開空調按鈕, ButtonListener 監聽到該點擊事件, 即會通過XMPP 協議發送開空調或關空調指令給后臺, 后臺解析該消息頭, 找到車機JID, 然后把JSON 格式的MsgContents 繼續封裝進XMPP 消息,發送給車機系統, 車機系統收到消息后就會控制車輛進行開或關空調, 并且將操作結果返回給手機端在頁面上呈現.遠程開車門命令與遠程尋車和遠程開空調功能類似.

3.4 車輛定位功能

打開主頁面的車輛定位按鈕, 會進入地圖界面, 進入該界面同時, APP 會發送一條GPS 的請求給車機系統, 等待獲取到返回的車輛GPS 信息后, 會顯示車輛的位置在地圖上, 并且會調用手機的GPS 顯示用戶的位置, 此時點擊導航到車, 會出現用戶和車的路線規劃,用戶可以選擇導航到車的位置, 即會開始實時導航, 導航到車的位置后自動結束導航.車輛定位界面如圖6所示.

3.5 車外自動泊車功能

打開主頁面的車外泊車按鈕, 進入車外泊車頁面,同時會向車機請求車位信息, 車機系統會把車位的4 個坐標點(x1, y1), (x2, y2), (x3, y3), (x4, y4)發過來,并且會有一個標記位記錄該車位是否為空, 手機端收到車位信息后要把數據解析出來, 然后通過標記位選出空車位, 并記錄下空車位的4 個坐標信息, 然后再根據車位與車的相對位置, 在界面上自己繪制view, 車在view 的正中間, 然后以車為中心, 首先將車位坐標系進行轉換, 轉換成為手機坐標系, 然后再將車位的坐標點轉化成像素, 然后與車的坐標進行比較, 車位的x 坐標小于車的x 坐標的位于車的左側, 車位的x 坐標大于的車的x 坐標的位于車的右側, 車位的y 坐標小于車的y 坐標的位于車的上側, 車位的y 坐標大于車的y 坐標的位于車的下側(比如, 車的像素坐標是(540, 960), 那么車位轉換后的像素坐標為(480, 550),這個車位就位于車的左上側)以此繪制車位圖, 繪制完成后空車位可供用戶隨意選擇, 用戶觸屏選擇要停進去的車位, 然后view 會監聽該手指點擊事件, 獲取到選擇的空車位編號, 將該編號組成JSON 格式的數據封裝到XMPP 協議里面, 發送給車機, 車機系統收到車位選擇消息后, 開始控制車輛開始自動泊車.泊車成功后會推送成功的消息給手機端, 如果泊車失敗, 車上的360 攝像頭會拍攝一張場景圖發送給后臺, 然后后臺轉發給手機端, 手機端下載圖片后顯示給用戶.車外泊車效果圖如圖7 所示.

圖5 主頁面效果圖

圖6 車輛定位效果圖

3.6 遠程召喚功能實現

點擊主頁的遠程召喚功能, 進入遠程召喚頁面, 如圖8 所示, 4 個位置的按鈕可以控制車輛前后左右移動, 點擊按鈕即發送移動指令, 后臺監測系統收到前端APP 發來的指令后, 進行解析, 消息Head 部分解析出目的地JID 信息, 然后將Body 部分封裝成一個新的消息, 將該消息轉發給JID 對應的車機系統, 車機系統開始控制車輛移動, 用戶松開按鈕即發送停止命令, 然后經過后臺系統轉發個車機系統控制車輛停止.

圖7 車外泊車效果圖

3.7 遠程狀態查詢功能實現

下拉主頁進行刷新, 此時會觸發APP 后臺會發送一條狀態查詢指令, 查詢的狀態包括車內溫度, 空調開關, 車門開關, 車的剩余電量, 胎溫胎壓, 車輛是否有故障等.服務器端收到這條指令后進行MsgType 和MsgHeader 的解析, 然后解析出車機JID, 將該指令重新封裝成XMPP 消息發送給對應的車機, 車機解析出指令, 然后通過CAN 把指令發給對應的XCU, 通過對應的XCU 收集到需要的狀態, 然后把該狀態封裝成XMPP消息回復給對應的服務器, 再有服務器轉發給對應的手機JID, 然后手機端會根據返回的狀態在界面上進行顯示, 如圖5 所示, 如果車有故障, 在圖5 的“我的汽車”界面右上角的角標會亮紅色, 并且顯示故障的數量,然后點擊該紅色角標會顯示具體的故障信息.

圖8 車輛召喚功能實現頁面

4 結束語

本文設計和實現的車輛遠程控制APP, 方便用戶隨時隨地的查看自己車輛狀態信息.針對該APP 的功能進行場景需求分析, 主要講述Android 系統手機端APP 的設計以及各個功能的具體實現.最后該APP 完成了真實的車輛控制原型系統, 配合車機系統投入到實際的應用當中, 為用戶提供了方便, 提高新能源車的使用體驗.

猜你喜歡
頁面指令用戶
大狗熊在睡覺
聽我指令:大催眠術
刷新生活的頁面
保健醫苑(2022年1期)2022-08-30 08:39:14
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
如何獲取一億海外用戶
創業家(2015年5期)2015-02-27 07:53:25
坐標系旋轉指令數控編程應用
機電信息(2014年27期)2014-02-27 15:53:56
主站蜘蛛池模板: 欧美亚洲日韩不卡在线在线观看| 久久中文字幕不卡一二区| 午夜视频在线观看区二区| 一区二区三区国产精品视频| 亚洲美女高潮久久久久久久| 亚洲色图另类| 日本黄色a视频| 91精品国产情侣高潮露脸| 全裸无码专区| 在线无码私拍| 农村乱人伦一区二区| 婷婷色中文网| 亚洲一区二区在线无码| 中国特黄美女一级视频| 日韩麻豆小视频| 亚洲国产精品日韩av专区| 国产成人高精品免费视频| 丰满少妇αⅴ无码区| 欧美成人精品一级在线观看| 国产高清在线精品一区二区三区| 成人欧美日韩| 露脸真实国语乱在线观看| 国产高清在线精品一区二区三区 | 国产97公开成人免费视频| 亚洲系列中文字幕一区二区| 老司机午夜精品网站在线观看 | 久久永久精品免费视频| 国产女人在线| 久久a毛片| 免费毛片视频| 麻豆精品在线播放| 97超级碰碰碰碰精品| a色毛片免费视频| 亚洲无线国产观看| 日本91在线| 欧美在线国产| 亚洲第一黄片大全| 欧美成人精品在线| 国产精品无码AⅤ在线观看播放| 色欲国产一区二区日韩欧美| 91毛片网| 精品国产免费人成在线观看| 日韩色图区| 日本一本正道综合久久dvd | 久视频免费精品6| 亚洲91在线精品| 国产91小视频在线观看| 欧美国产菊爆免费观看| 久久久久国产精品嫩草影院| 婷婷色一二三区波多野衣| 亚洲国产精品久久久久秋霞影院| 一本大道香蕉久中文在线播放| 亚洲成人一区二区| 在线精品欧美日韩| 国产丝袜丝视频在线观看| 99国产精品一区二区| 毛片久久久| 青青草一区二区免费精品| 日韩中文字幕亚洲无线码| 中国黄色一级视频| 国产清纯在线一区二区WWW| 国产av无码日韩av无码网站| 爱爱影院18禁免费| 亚洲国产中文精品va在线播放| 亚洲天堂区| 亚洲美女一级毛片| 国产激情第一页| 99er这里只有精品| 国产丝袜91| 国产精品成人免费视频99| 一级全免费视频播放| 国产美女人喷水在线观看| 天堂中文在线资源| 欧美日本激情| 成人毛片免费观看| 欧美精品v欧洲精品| 国产青青草视频| 国产丝袜啪啪| 日韩国产黄色网站| 国产精品区网红主播在线观看| P尤物久久99国产综合精品| 国产精品嫩草影院视频|