2 nonfuxinyang nonfuxinyang 于 2012.12.11 11:13 提问

如何刷新Android手机的GPS状态

我用Android手机在室外定位后,回到室内,没有了GPS信号。这里调用getLastKnownLocation返回的是上次的定位结果。实际是此时(在室内)已经没有了GPS信号。我如何刷新GPS状态?

3个回答

Sueyexin
Sueyexin   2012.12.11 13:13

如果你是在室内测试,试试既用网络有用GPS卫星(注意:从网络上得到的位置信息有时候不是100%准确)

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
  locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);and wait sometime for getting a gps fix from gps-reciver.normaly it takes 2 to 3 minutes if there is less signal strength it may take long.

如果你有任何问题,请贴你的代码,这样才能方便查问题在哪里。

niangzhi
niangzhi   2012.12.11 13:31

就像Sueyexin的那样,当你在室外或者是接近窗口的位置的时候你可以那几行代码来获得GPS坐标
然而当你房间里或地下室,你还想获得GPS坐标,你可以试试这个替代方案,当你在地下室或在房间里你还有网络信号的时候。这里您可以使用TelePhony API来获取GPS坐标。

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

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,你将获得经纬度的值。

niangzhi
niangzhi 这个能解决你的问题么?如果可以的话采纳一下吧
接近 5 年之前 回复
nonfuxinyang
nonfuxinyang 不错,谢谢你的回复
接近 5 年之前 回复
liangchichexin
liangchichexin   2012.12.11 13:40

根据你的需要,你可以每5分钟启动一下你的Service。你可以用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);
Csdn user default icon
上传中...
上传图片
插入图片