Android系統模擬位置的使用方法 - 程式前沿
文章推薦指數: 80 %
本文為大家分享了Android模擬位置的使用方法,支援Android6.0, ... Android 6.0 及以上:沒有【允許模擬位置】選項,同時棄用了Settings.Secure.
程式語言前端開發IOS開發Android開發雲端運算人工智慧伺服器搜尋資料庫軟體開發工具Android系統模擬位置的使用方法2018.07.03Android開發android,模擬位置HOMEAndroid開發Android系統模擬位置的使用方法Advertisement本文為大家分享了Android模擬位置的使用方法,支援Android6.0,供大家參考,具體內容如下1、開啟系統設定中的模擬位置Android6.0以下:【開發者選項->允許模擬位置】Android6.0及以上:【開發者選項->選擇模擬位置資訊應用】AndroidManifest.xml
//Android6.0以下:是否開啟【允許模擬位置】booleancanMockPosition=Settings.Secure.getInt(getContentResolver(),Settings.Secure.ALLOW_MOCK_LOCATION,0)!=0Android6.0及以上:沒有【允許模擬位置】選項,同時棄用了Settings.Secure.ALLOW_MOCK_LOCATION,無法通過上面的方法判斷。
增加了【選擇模擬位置資訊應用】的方法,需要選擇使用模擬位置的應用。
但是不知道怎麼獲取當前選擇的應用,因此通過是否能夠成功執行addTestProvider方法來進行判斷,如果沒有選擇當前的應用,則addTestProvider會丟擲異常。
booleanhasAddTestProvider=false;
booleancanMockPosition=(Settings.Secure.getInt(getContentResolver(),Settings.Secure.ALLOW_MOCK_LOCATION,0)!=0)
||Build.VERSION.SDK_INT>22;
if(canMockPosition&&hasAddTestProvider==false){
try{
StringproviderStr=LocationManager.GPS_PROVIDER;
LocationProviderprovider=locationManager.getProvider(providerStr);
if(provider!=null){
locationManager.addTestProvider(
provider.getName()
,provider.requiresNetwork()
,provider.requiresSatellite()
,provider.requiresCell()
,provider.hasMonetaryCost()
,provider.supportsAltitude()
,provider.supportsSpeed()
,provider.supportsBearing()
,provider.getPowerRequirement()
,provider.getAccuracy());
}else{
locationManager.addTestProvider(
providerStr
,true,true,false,false,true,true,true
,Criteria.POWER_HIGH,Criteria.ACCURACY_FINE);
}
locationManager.setTestProviderEnabled(providerStr,true);
locationManager.setTestProviderStatus(providerStr,LocationProvider.AVAILABLE,null,System.currentTimeMillis());
//模擬位置可用
hasAddTestProvider=true;
canMockPosition=true;
}catch(SecurityExceptione){
canMockPosition=false;
}
}
3、模擬位置
privateclassRunnableMockLocationimplementsRunnable{
@Override
publicvoidrun(){
while(true){
try{
Thread.sleep(INTERVEL);
if(hasAddTestProvider()==false){
continue;
}
try{
//模擬位置(addTestProvider成功的前提下)
StringproviderStr=LocationManager.GPS_PROVIDER;
LocationmockLocation=newLocation(providerStr);
mockLocation.setLatitude(22);//維度(度)
mockLocation.setLongitude(113);//經度(度)
mockLocation.setAltitude(30);//高程(米)
mockLocation.setBearing(180);//方向(度)
mockLocation.setSpeed(10);//速度(米/秒)
mockLocation.setAccuracy(0.1f);//精度(米)
mockLocation.setTime(newDate().getTime());//本地時間
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.JELLY_BEAN_MR1){
mockLocation.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos());
}
locationManager.setTestProviderLocation(providerStr,mockLocation);
}catch(Exceptione){
//防止使用者在軟體執行過程中關閉模擬位置或選擇其他應用
stopMockLocation();
}
}catch(InterruptedExceptione){
e.printStackTrace();
}catch(Exceptione){
e.printStackTrace();
}
}
}
}
4、停止模擬位置
/**
*停止模擬位置,以免啟用模擬資料後無法還原使用系統位置
*若模擬位置未開啟,則removeTestProvider將會丟擲異常;
*若已addTestProvider後,關閉模擬位置,未removeTestProvider將導致系統GPS無資料更新;
*/
publicvoidstopMockLocation(){
if(hasAddTestProvider){
try{
locationManager.removeTestProvider(LocationManager.GPS_PROVIDER);
}catch(Exceptionex){
//若未成功addTestProvider,或者系統模擬位置已關閉則必然會出錯
}
hasAddTestProvider=false;
}
}
AndroidStudioProjectAdvertisementAdvertisement写评论取消回覆很抱歉,必須登入網站才能發佈留言。
近期文章Vue中容易被忽視的知識點2019.12.09if我是前端Leader,談談前端框架體系建設2019.12.09Spark入門(一)用SparkShell初嘗Spark滋味2019.12.08Spark入門(二)如何用Idea運行我們的Spark項目2019.12.08Spark入門(三)Spark經典的單詞統計2019.12.08Spark入門(四)Spark的map、flatMap、mapToPair2019.12.08Spark入門(五)Spark的reduce和reduceByKey2019.12.08Spark入門(六)Spark的combineByKey、sortBykey2019.12.08Spark入門(七)Spark的intersection、subtract、union和distinct2019.12.08Spark實戰尋找5億次訪問中,訪問次數最多的人2019.12.08AdvertisementAdvertisement
延伸文章資訊
- 1Android系統模擬位置的使用方法 - 程式前沿
本文為大家分享了Android模擬位置的使用方法,支援Android6.0, ... Android 6.0 及以上:沒有【允許模擬位置】選項,同時棄用了Settings.Secure.
- 2Android tips(十)-->允許模擬位置在Android M下的坑 - 程式人生
按道理來說,即便使用者開啟了車載模式這時候通過上述判斷是否開啟模擬位置的程式碼返回值應該是false(沒有開啟模擬位置),但是這時候用於彈出了定位 ...
- 3允許模擬位置在Android M下的坑 - 台部落
按道理來說,即便用戶開啓了車載模式這時候通過上述判斷是否開啓模擬位置的代碼返回值應該是false(沒有打開模擬位置),但是這時候用於彈出了定位失敗, ...
- 4求助LG V10 關於>>允許模擬位置<< 選項消失 - Mobile01
原本我LG V10 Android版本是5.0有下圖中的允許模擬位置的選項但前2天更新成Android 6.0 ... 這是否真的消失沒有這個選項,還是說藏在別的選項設定中嗎
- 5搜索结果_安卓系统有不需要开允许模拟位置的定位吗 - 百度知道
这个功能可以不用打开,打开后连接电脑会提示叫你关闭,模拟位置你关着就可以了 ... 进设置--开发人员选项--允许模拟地点,把这一项关闭如果你的设置里没有开发人员 ...