1

我用安卓手机在室外定位,回到室内,没有GPS信号。这里调用getLastKnownLocation()返回位置结果是最后一次的。事实是(室内)没有 GPS 信号。如何刷新 GPS 状态?

4

3 回答 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 回答