我用安卓手机在室外定位,回到室内,没有GPS信号。这里调用getLastKnownLocation()
返回位置结果是最后一次的。事实是(室内)没有 GPS 信号。如何刷新 GPS 状态?
问问题
1325 次
3 回答
0
如果您在室内进行测试,请尝试同时使用网络和 gps 卫星(注意:来自网络的位置信息有时不是 100% 准确)
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
并等待一段时间从 gps-reciver 获取 gps 修复。如果信号强度较低,通常需要 2 到 3 分钟,可能需要很长时间。
如果您遇到任何问题,请输入您的代码,我们将检查
于 2012-12-11T03:52:37.510 回答
0
正如 Abhijit 所说,当您在窗外或附近时,您可以使用这些代码行来获取 GPS 坐标。
但是,当您在房间或地下室中并且仍想查找 GPS 坐标时,您可以尝试这种替代方式,
当您在地下室或房间时,您仍然可以获得网络覆盖(网络信号)。所以在这里你可以使用 TelePhony API 来获取 GPS Co-Ordinates。
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 );
现在将这个 cellid、lac、mcc 和 mnc 值传递给opencellid.org,您将获得纬度和经度值。
于 2012-12-11T04:05:32.557 回答
0
您可以根据需要每 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);
于 2012-12-11T04:48:58.347 回答