2012-12-11 99 views
1

我使用Android手機定位在室外,回到內部,沒有GPS信號。這裏撥打getLastKnownLocation()返回地點結果是最後一次。事實是(室內)沒有GPS信號。我如何刷新GPS狀態?如何刷新Android手機GPS狀態

回答

0

如果你是在室內嘗試測試到無論是從網絡和GPS衛星使用(注:從網絡有時不是100%精確的位置信息)

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener); 
    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener); 

和某個等待得到GPS的GPS定位reciver.normaly它需要2至3分鐘,如果信號強度較低,可能需要很長時間。

如果你正面臨的任何問題,請把你的代碼,我們將檢查

0

正如作者Abhijit說,當你在室外或靠近窗戶,以獲取GPS座標,你可以使用這些代碼行。

然而,當你在室內或地下室內,你仍然要找到GPS座標,你可以試試這個替代方法,

當你在地下室或在房間裏,你仍然得到網絡覆蓋(網絡信號)。因此,您可以在這裏使用TelePhony API獲取GPS協調員。

String mcc; //Mobile Country Code 
String mnc; //mobile network code 
String cellid; //Cell ID 
String lac; //Location Area Code 

//retrieve a reference to an instance of TelephonyManager 
TelephonyManager telephonyManager = (TelephonyManager) myContext.getSystemService(Context.TELEPHONY_SERVICE); 
GsmCellLocation cellLocation = (GsmCellLocation)telephonyManager.getCellLocation(); 
String networkOperator = telephonyManager.getNetworkOperator(); 

cellid = String.valueOf(cellLocation.getCid()); 
lac = String.valueOf(cellLocation.getLac()); 
mcc = networkOperator.substring(0, 3); 
mnc = networkOperator.substring(3); 

現在通過這個小區id,紫膠,MCC和MNC值opencellid.org你會緯度經度&值。

0

您可以initate您服務每5分鐘按你的需要 可以使用pending Intent

long UPDATE_INTERVAL=300000; 
     Intent myIntent=new Intent(Main.this,YourGPSLOcationClass.class); 
     PendingIntent pendingIntent=PendingIntent.getService(Main.this,0,myIntent,0); 
     AlarmManager alarmManager=(AlarmManager)getSystemService(ALARM_SERVICE); 

     Calendar cal=Calendar.getInstance(); 
     cal.add(Calendar.MINUTE,0); 
     alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP,cal.getTimeInMillis(),UPDATE_INTERVAL,pendingIntent);