当我们在室内使用安卓手机时,如何快速获取经纬度或 GPS 数据?

Posted

技术标签:

【中文标题】当我们在室内使用安卓手机时,如何快速获取经纬度或 GPS 数据?【英文标题】:How to get the latitude and longitude or gps data quickly while we are indoor in an android phone? 【发布时间】:2012-01-07 23:36:08 【问题描述】:

我正在尝试通过 GPS 从 android 手机获取纬度和经度信息,当我在室外或直接在天空下时,我能够立即获得值,但当我在室内或房间内时获得价值需要一分钟多的时间。当我在房间内使用我的应用程序时,谁能帮助我快速获取此值。

我使用以下代码获取值:

LocationManager locManager;
locManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000L,500.0f,
                                  locationListener);
Location location = locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

private final LocationListener locationListener = new LocationListener() 
    public void onLocationChanged(Location location) 

    EditText myLocationText = (EditText)findViewById(R.id.editText1);
    EditText myLocationText1 = (EditText)findViewById(R.id.editText2);
    String latString = "";
    String LongString = "";

    if (location != null) 
        double lat = location.getLatitude();
        double lng = location.getLongitude();
        latString = "" + lat;
        LongString ="" + lng;



     else 
        latString = "No location found";
        LongString = "No location found";
           
     myLocationText.setText(""+ latString);
     myLocationText1.setText(""+ LongString);

除了使用LocationManager之外,还有其他方法可以获取 GPS 值吗??

【问题讨论】:

我想你会想要使用 GPS 缓存。查看此链接:forums.groundspeak.com/GC/index.php?showtopic=215136。他们正在为此比较各种工具。也许其中之一会符合您的目的? 如果您的应用无法接收到来自卫星的信号,那么 GPS 将无法正常工作。如果您在室内收到任何信号,那将是一个奖励。您不会期望您的电视在没有天线的情况下也能正常工作。 @KevinCoulombe Geocaching 是一项运动,您确定该链接相关吗? Awww,无视我的评论!它是寻宝缓存中的缓存工具... 【参考方案1】:

你可以得到最后一个已知位置,而且速度相当快:

/**
 * Gets the last known location.
 *
 * @param locationManager the location manager
 * @return the last known location
 */
public static Location getLastKnownLocation(LocationManager locationManager)

    Location bestResult = null;
    float bestAccuracy = 10000;
    long bestTime = 0;

    List<String> matchingProviders = locationManager.getAllProviders();

    for (String provider: matchingProviders) 
        Log.d("LOCATION", "Provider: " + provider);
        Location location = locationManager.getLastKnownLocation(provider);
        Log.d("LOCATION", "Location found? "+ (location==null?"NO":"YES"));
        if (location != null) 
            float accuracy = location.getAccuracy();
            long time = location.getTime();
            Log.d("LOCATION", "Acc: "+ String.valueOf(accuracy) + " -- Time: " + String.valueOf(time));
            if ((time > minTime && accuracy < bestAccuracy)) 
                bestResult = location;
                bestAccuracy = accuracy;
                bestTime = time;
            
            else if (time < minTime && 
                    bestAccuracy == Float.MAX_VALUE && time > bestTime)
                bestResult = location;
                bestTime = time;
            
        
    
    Log.d("LOCATION", "BEST FOUND? "+ (bestResult==null?"NO":"YES"));

    return bestResult;

【讨论】:

【参考方案2】:

您可以在LocationManager中使用以下方法获取设备的最后一个已知位置,这是系统范围内最后一次找到的位置。

这个方法是关键:

Location lastKnownLocation = locationManager.getLastKnownLocation(locationProvider);

更多详情请查看Obtaining User Location

【讨论】:

【参考方案3】:

如果您在室内,最好使用LocationManager.NETWORK_PROVIDER,因为您不太可能在室内收到信号。您也可以使用getLastKnownLocation(),但这可能不存在或已过时。

【讨论】:

【参考方案4】:

如果你想在房间里找到位置,gps 提供商很慢。您可以尝试更改:

locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000L,500.0f,
                                  locationListener);
Location location = locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

作者:

locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,1000L,500.0f,
                                      locationListener);

您将在 'public void onLocationChanged(Location location)' 方法中收到位置。

【讨论】:

【参考方案5】:

我使用网络提供商来获取坐标,在客厅的房子里总是更快。但是当我在地下室区域尝试相同的操作时,尽管我等了将近几分钟,但它根本没有获取坐标。

注意:我可以从地下室拨打电话,也可以浏览..

【讨论】:

以上是关于当我们在室内使用安卓手机时,如何快速获取经纬度或 GPS 数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何设法在科尔多瓦获取我的安卓手机的纬度和经度?

在安卓开发中如何在自己设置的经纬度显示到高德地图上中心点

华为使用h5上传图片没有gps信息

安卓手机上有啥APP能简便快捷的获取当前位置的经纬度

安卓手机上有啥APP能简便快捷的获取当前位置的经纬度

安卓修改GPS经纬度