Android 位置管理器每次返回相同的 GPS 坐标

Posted

技术标签:

【中文标题】Android 位置管理器每次返回相同的 GPS 坐标【英文标题】:Android location manager returns same gps coordinates every time 【发布时间】:2013-01-20 12:47:05 【问题描述】:

我正在创建一个应用程序来将手机位置发送到我的服务器。我遇到的问题是,每次我启动应用程序时,手机都会给我完全相同的 gps 坐标。当我重新启动它时,坐标可能会改变,但在发送第一个坐标后,它会发送一次相同的坐标,直到应用程序重新启动。

代码:

// Contructor etc

public class LocationASYNC extends AsyncTask<Activity, String, Void> 
    private MainActivity m;
    private LocationManager locationManager;
    private Criteria c;

    public LocationASYNC(MainActivity m) 
        this.m = m;
        locationManager = (LocationManager) m
                .getSystemService(Context.LOCATION_SERVICE);
        c = new Criteria();
        c.setAccuracy(Criteria.ACCURACY_FINE);
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                3000, 0, m);
    

// Code for finding best location provider and returning location
    private Location findBestLocation() 

            Location location = locationManager
                    .getLastKnownLocation(locationManager.getBestProvider(c, true));

            Log.v("location",
                    "provider: " + locationManager.getBestProvider(c, true));
            // Check if location is null
            if (location != null) 
                Log.v("location", "provider not null");
                // Test if location is more than 100 seconds old
                if (location.getTime() < (System.currentTimeMillis() - 100000)) 
                    Log.v("location", "provider is old(GPS)");
                    // Use network if location is more than 100 seconds (99% chance
                    // location will be gps)
                    location = locationManager
                            .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                    // Check if network location is more then 100 seconds
                    Log.v("location", "provider: " + location.getProvider());
                    if (location.getTime() < (System.currentTimeMillis() - 100000)) 
                        // Return null if all location data is old
                        Log.v("location", "provider is old (INT)");
                        return null;
                    
                
                // Return location if one is less than 100 seconds old
                return location;
            
            // return null if no location is found
            return null;
        

This is the output i get from logcat:

02-05 15:31:59.670: V/location(29659): provider: network
02-05 15:31:59.675: V/location(29659): lat: 60.3935485 lon: 5.3114676 time: 1360074627953 acc: 28.757
02-05 15:32:02.685: V/location(29659): provider: gps
02-05 15:32:02.685: V/location(29659): provider not null
02-05 15:32:02.685: V/location(29659): provider is old(GPS)
02-05 15:32:02.690: V/location(29659): provider: network
02-05 15:32:02.690: V/location(29659): lat: 60.3935485 lon: 5.3114676 time: 1360074627953 acc: 28.757
02-05 15:32:05.700: V/location(29659): provider: gps
02-05 15:32:05.700: V/location(29659): provider not null
02-05 15:32:05.705: V/location(29659): provider is old(GPS)
02-05 15:32:05.710: V/location(29659): provider: network
02-05 15:32:05.710: V/location(29659): lat: 60.3935485 lon: 5.3114676 time: 1360074627953 acc: 28.757
02-05 15:32:08.720: V/location(29659): provider: gps
02-05 15:32:08.720: V/location(29659): provider not null
02-05 15:32:08.720: V/location(29659): provider is old(GPS)
02-05 15:32:08.725: V/location(29659): provider: network
02-05 15:32:08.725: V/location(29659): provider is old (INT)

每个日志猫帖子的纬度和经度都相同,时间(自 1980 年左右以来的毫秒)也是相同的。

我的应用似乎只获取了一次位置,并没有尝试再次获取位置。

【问题讨论】:

你用的是哪款手机,三星? 你有答案了吗?我也有同样的问题。 有什么更新吗?您之前尝试过解决方案吗? 注册为位置监听器的 MainActivity 会发生什么?该位置在 onLocationChanged() 方法中可用。 【参考方案1】:

尝试检查您的设备是否启用了 GPS,或者设备是否支持 GPS。

【讨论】:

以上是关于Android 位置管理器每次返回相同的 GPS 坐标的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Xamarin 在 Android 中同步获取 GPS 位置更新?

Android 的 FusedLocationApi 不激活 GPS 并返回非常旧的日期

通过GPS的android位置估计器

Android:是不是有任何解决方案可以每次使用 GPS 或网络获取准确位置 [重复]

屏幕关闭时,Android 10 会阻止网络请求和 GPS 呼叫

强制关闭 Android 位置权限