十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
可以。
創(chuàng)新互聯(lián)公司專注于沂南網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供沂南營銷型網(wǎng)站建設(shè),沂南網(wǎng)站制作、沂南網(wǎng)頁設(shè)計、沂南網(wǎng)站官網(wǎng)定制、成都微信小程序服務(wù),打造沂南網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供沂南網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
在Android操作系統(tǒng)下,基站定位其實很簡單,先說一下實現(xiàn)流程:
調(diào)用SDK中的API(TelephonyManager)獲得MCC、MNC、LAC、CID等信息,然后通過google的API獲得所在位置的經(jīng)緯度,最后再通過google
map的API獲得實際的地理位置。(google真牛?。?/p>
華為 安卓手機(jī)
在撥號鍵盤輸入 *#*#4636#*#* , 選擇 “手機(jī)信息”
“位置”那行顯示的就是當(dāng)前的16進(jìn)制基站信息,把LAC和CID 填入到本站的 基站查詢 頁面,選擇16進(jìn)制查詢,即可顯示地圖位置。
該命令顯示的信息非常多,除了LAC,CELLID外,還可以顯示當(dāng)前的信號強(qiáng)度,網(wǎng)絡(luò)類型等等。
許多國產(chǎn)軟件都會使用基站進(jìn)行定位,android模擬器是沒有流量卡的,所以沒有基站位置,但是我們可以通過Xposed來讓模擬器擁有指定的基站信息。擁有基站信息的模擬器就可以在地圖app中定位了,這種方式比通過hook修改經(jīng)緯度要更加好一點,可能大多數(shù)軟件都是基站來判斷,而不是經(jīng)緯度。
基站定位使用到如下概念
通過telephonyManager # getNetworkOperator()獲取得到,它返回一個字符串長度為5的值,前3位就是MCC ,后兩位為MNC
接下來就是我們Xposed出場的時候了,通過真機(jī)運(yùn)行BaseStationInfoDemo項目(包含上面這些方法)得到真實數(shù)據(jù)信息。將數(shù)據(jù)記錄并運(yùn)行HookCellInfoDemo項目(修改了模擬器的基站信息),然后在模擬器上運(yùn)行BaseStationInfoDemo項目,觀察日志輸出,并可以在模擬器上打卡百度地圖等地圖軟件觀察當(dāng)前位置。
getCellLocationMethodHook的實現(xiàn)如下:
就是在beforeHookedMethod中直接通過setResult將新建的帶有基站LAC和CID信息的GsmCellLocation 返回。
首先看下源碼中NerworkInfo類的實現(xiàn)方式,發(fā)現(xiàn)其是一個實現(xiàn)了Parcelable接口的序列化對象,它擁有多個成員變量,這里只需要修改6個,其他的在wifi或者4g網(wǎng)絡(luò)的情況下的值不變
這樣的話,最終模擬器的網(wǎng)絡(luò)情況是有wifi圖標(biāo),但是在指定包名內(nèi)獲取到的網(wǎng)絡(luò)類型和NetworkInfo卻是4g類型的數(shù)據(jù),符合我們的業(yè)務(wù)需求。
附上源碼地址:
里面的兩個文件夾分別就是BaseStationInfoDemo項目和HookCellInfoDemo項目
定位服務(wù)可以通過gps、基站還有wifi數(shù)據(jù)實現(xiàn),而且對應(yīng)用程序開發(fā)者還是透明的定位服務(wù)可以用基站和wifi嗎?? Gps可以確定你的經(jīng)緯度 基站和wifi好像不行