android基站定位
A. Android模擬器模擬基站信息,並將wifi偽造成4g數據信息
許多國產軟體都會使用基站進行定位,android模擬器是沒有流量卡的,所以沒有基站位置,但是我們可以通過Xposed來讓模擬器擁有指定的基站信息。擁有基站信息的模擬器就可以在地圖app中定位了,這種方式比通過hook修改經緯度要更加好一點,可能大多數軟體都是基站來判斷,而不是經緯度。
基站定位使用到如下概念
通過telephonyManager # getNetworkOperator()獲取得到,它返回一個字元串長度為5的值,前3位就是MCC ,後兩位為MNC
接下來就是我們Xposed出場的時候了,通過真機運行BaseStationInfoDemo項目(包含上面這些方法)得到真實數據信息。將數據記錄並運行HookCellInfoDemo項目(修改了模擬器的基站信息),然後在模擬器上運行BaseStationInfoDemo項目,觀察日誌輸出,並可以在模擬器上打卡網路地圖等地圖軟體觀察當前位置。
getCellLocationMethodHook的實現如下:
就是在beforeHookedMethod中直接通過setResult將新建的帶有基站LAC和CID信息的GsmCellLocation 返回。
首先看下源碼中NerworkInfo類的實現方式,發現其是一個實現了Parcelable介面的序列化對象,它擁有多個成員變數,這里只需要修改6個,其他的在wifi或者4g網路的情況下的值不變
這樣的話,最終模擬器的網路情況是有wifi圖標,但是在指定包名內獲取到的網路類型和NetworkInfo卻是4g類型的數據,符合我們的業務需求。
附上源碼地址: https://github.com/carrys17/CellInfo
裡面的兩個文件夾分別就是BaseStationInfoDemo項目和HookCellInfoDemo項目
B. 為什麼百度地圖 Android 版不用開啟 GPS 就能實現定位
因為你開啟了移動數據流量,你手機會與附近的移動聯通或者電信的信號塔產生數據交換,從而網路地圖可以知道你的大概位置,不過沒有gps那麼准確,謝謝採納!
C. android基站定位 可以關閉嗎
飛行模式可以阻止APP使用基站定位,拔出或禁用SIM卡不一定可以阻止。
D. 百度地圖android版,是如何做到通過基站定位到如此准確的
這是火星坐標系的原因..因為定位用的大多不是本國的衛星..定位出的坐標在中國不會准確..都會 有 在圓形范圍內隨機的 400 - 600米的偏移.我有一個解析火星坐標系的類.. 年前測試的時候 通過這個類 來 反算經緯度 還是非常准確的..只有10米左右的誤差..但是不知道幾年的火星演算法更新沒有...