?

基于安卓的便民自行車管理系統的設計與實現

2020-07-22 11:15
榆林學院學報 2020年4期
關鍵詞:便民充值掃碼

董 婷

(榆林學院 信息工程學院,陜西 榆林 719000)

1引言

隨著機動車的迅猛發展,環境不斷惡化。為了解決交通擁堵以及環境污染這兩個世界問題,政府便開始提倡綠色生活,環保出行?!痘诎沧康谋忝褡孕熊嚬芾硐到y》便是在綠色生活,環保出行的大環境背景下誕生的。用戶可以在安卓手機上安裝本文介紹的《基于安卓的便民自行車管理系統》方便快捷的使用便民自行車,通過軟件可以查看附近車輛位置,用軟件內的掃碼功能可以實現解鎖車輛。并開始計時收費,并且實現騎行路線規劃與導航,行程結束后可以支付并反饋騎行體驗。

2 便民自行車管理系統的實現

2.1 注冊登錄的實現

在服務器啟動后,進入便民自行車管理系統客戶端,新用戶需要注冊登錄賬號。用戶通過在APP內注冊頁面輸入的信息會返回到服務端進行數據庫匹配和增加操作。管理員也可以使用APP進行注冊,只需要在注冊框下方點擊管理員權限。

用戶注冊時會進行是否注冊過的邏輯判斷,注冊的賬號通過邏輯判斷后,在用戶輸入密碼的時候進行加密處理,管理員注冊時需要進行權限選擇。

2.2 地圖定位的實現

百度地圖提供的免費定位服務 分為高精度定位模式 低功耗定位模式 僅設備定位模式 三種模式,高精度定位模式:在高精度定位模式下,會同時使用移動網絡定位和GPS定位,優先返回最高精度的定位結果[1-2]; 低功耗定位模式:這種定位模式下,不會使用GPS,只會使用網絡定位(Wi-Fi和基站定位) 僅用設備定位模式:這種定位模式下,不需要連接網絡,只使用GPS進行定位,這種模式下不支持室內環境的定位[3]。具體操作配置如下:

(1)在百度SDK官網下載com.baidu.location.service包。

(2)將com.baidu.location.service包直接拷貝到工程中。

(3)進行簡單配置即可獲取定位結果,也可以根據demo內容自行封裝。

2.3騎行距離計算功能的實現

騎行距離計算是通過定位獲取經度、緯度、距離和一個角度。具體計算步驟如下:

圖1 計算距離二維坐標圖

(1)(Math.PI / 180) * latitude1作用是將角度轉換為弧度,經緯度坐標是角度值,計算時需要換為弧度。這里所有的計算都是用弧度[4]。

(2)函數以正北方(due north) 也就是指南針的方向為0度,順時針方向增加。如下圖,Distance距離如果是d的話,dx就是x軸方向的長度,即longitude經度方向的長度;dy就是y軸方向的長度,即latitude緯度方向的長度。

dx、dy的計算方式也可以是以正東(due east)方向為0度[5]。

dx=distance*cos(θ)

dy=distance*cos(θ)

其中區別是cos與sin互換。

(3)截面過球心,此時截面的面積最大,此圓叫球的大圓(Great Cycle),沿著經線進行截面,得到的都是大圓(Great Cycle)。球面被不經過球心的截面所截得的圓 叫做小圓[6]。緯度圈所在的圓是一個小圓。地球半徑R,平均值R=6371.0km,可以參看《根據2個經緯度點,計算這2個經緯度點之間的距離(通過經度緯度得到距離)》。其中值得一提的是,維基百科推薦使用Haversine公式,理由是Great-circle distance公式用到了大量余弦函數, 而兩點間距離很短時(比如地球表面上相距幾百米的兩點),余弦函數會得出0.999...的結果, 會導致較大的舍入誤差[7]。而Haversine公式采用了正弦函數,即使距離很小,也能保持足夠的有效數字。 以前采用三角函數表計算時的確會有這個問題,但經過實際驗證,采用計算機來計算時,兩個公式的區別不大[8]。 穩妥起見,這里還是采用Haversine公式。

其中

haversin(θ)=sin2(θ/2)=(1-cos(θ))/2

R為地球半徑,可取平均值 6371km;

φ1, φ2表示兩點的緯度;

Δλ 表示兩點經度的差值。

2.4掃碼開鎖功能的實現

圖2 二維碼區域解析圖

首先,介紹二維碼的一部分知識:二維碼一共有 40 個尺寸。官方叫版本 Version。Version 1 是 21 x 21 的矩陣,Version 2 是 25 x 25 的矩陣,Version 3 是 29 的尺寸,每增加一個 version,就會增加 4 的尺寸,公式是:(V-1)*4 + 21(V是版本號) 最高 Version 40,(40-1)*4+21 = 177,所以最高是 177 x 177 的正方形。

由于在本系統中沒有智能鎖設備的設計,在本系統中采用聯圖網制作生成模擬車輛的二維碼,在便民公共自行車管理系統中掃碼可以獲取單車的信息,二維碼是每個單車唯一的身份認證,每輛車都是唯一編號,掃二維碼和手動輸入單車編號效果一樣。然后通過地圖獲取到開鎖的定位,然后連續發起定位請求,請求的時間間隔為3000ms。實現掃碼開鎖的具體步驟如下:

(1)開啟camera,在后臺獨立線程中完成掃描任務;

(2)在掃描界面繪制了一個正方形的掃描區(viewfinder)提示用戶將二維碼置于掃描區以準確掃描;

(3)然后將掃描的結果發送到服務器端;

(4)掃描成功后會將掃描結果展示在界面上。

圖3 掃碼開鎖原理圖

Server生成二維碼的內容是手機段訪問服務器的登陸網址,再加上生成的uuid,這個uuid是用來確定是具體某個用戶的請求。Server是通過一個長連接維持用戶請求和服務器之間的通信,直到用戶通過手機端將請求信息發送給Server,然后長連接每隔一段時間通過uuid監測是否有用戶的開鎖信息,如果有,則長連接結束,跳轉到騎行頁面,將車輛信息返回給用戶。

2.5充值功能的實現

新用戶注冊登錄后會出現錢包充值的頁面,根據用戶所選的面值充值到用戶個人的錢包中,在用戶騎行結束后系統會自動扣除用戶的錢包余額。余額會在用戶的個人界面中展示方便用戶查看。

充值模塊通過構建前端ChargeActivity.Java頁面中有充值金額和手動輸入框。新用戶可以通過在手機端選擇面值,然后將充值的金額儲存在數據庫用戶表中。充值后手機端會提示充值成功。

2.6單車信息管理的實現

圖4 手機端單車管理流程圖

管理員注冊后登錄系統在手機端Fragment/Device.Java頁面的右上角點擊添加單車的按鈕,編輯單車的編號和單價。添加單車后,可以在頁面內進行修改和刪除單車信息。管理員添加的單車信息發送到服務端在deviceAddSubmit類中進行編號是否重復的邏輯判斷,判斷后將單車信息添加到Device表中。

3總結

本系統采用流行的Android移動端開發和比較流行的SpringMVC框架,運用MySQL數據庫來完成系統的設計與開發。系統全面覆蓋分析了用戶的需求,最終達到了預期的效果。用戶和管理都可以使用便民自行車管理系統的客戶端進行操作,實現了城市中公共自行車方便、便捷的使用。

本系統通過安卓手機客戶端和互聯網+讓用戶可以方便快捷的進行公共自行車的使用,用戶在系統中可以看到附近的車輛以及通過手機掃碼開鎖。然后管理員可以方便快捷的添加、管理、維修車輛以及進行系統維護等操作。

猜你喜歡
便民充值掃碼
臍橙連上物聯網 掃碼便知“前世今生”
山之高
便民公告欄
中國進入“掃碼”時代
瓊島道班的便民點
掃碼看直播
基于NFC的ETC卡空中充值服務應用系統實現
將廢舊電影卡充值后銷售的行為定性
便民電話緣何不便民
取消便民門診不能顧此失彼
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合