android GPS服务最佳实践

时间:2012-02-08 14:31:18

标签: android gps

我有一个使用GPS数据的应用程序,我正在使用

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0,

是否有使用此服务的最佳做法。假如某些应用已经调用了这个,我可以使用相同的GPS数据,而不是再次调用服务。

我该怎么做?

快乐编码

3 个答案:

答案 0 :(得分:1)

您的问题没有任何意义,因为NotificationManager与GPS和/或GPS数据无关。

第二部分回答:你不能重复使用另一个应用程序的GPS数据,你只能询问最后一个已知位置,并希望这不会为空。如果为空,则应使用LocationManager而不是NotificationManager自行获取排名。

答案 1 :(得分:0)

要从GPS接收数据,您应该使用以下代码:

locationMan= (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
locationMan.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
locationMan.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);

LocationListener locationListener= new LocationListener() {
        public void onLocationChanged(Location location) {

            //TODO be sure the new position is really better then the one already had.

            lastPos= location;
        }

        public void onStatusChanged(String provider, int status, Bundle extras) {
        }

        public void onProviderEnabled(String provider) {
        }

        public void onProviderDisabled(String provider) {
        }
    };  

这是一个简单的倾听者,因此每次Android知道当前位置的变化时,它都会调用所有听众,包括您的应用和其他应用。因此,无论LOCATION_SEVICE添加了多少个侦听器,发现位置的过程都只运行一次。

完成GPS使用后

locationMan.removeUpdates(locationListener);

删除你的听众

答案 2 :(得分:-2)

确保您已添加网络访问权限和GPS 确保您已将Google Map API密钥添加到xml