【问题标题】:Getting location android?获取位置android?
【发布时间】:2016-03-26 03:55:06
【问题描述】:

我想在一小段时间内每秒接收一次位置更新,所以我写了这段代码:

     public void registerListener() {

            if (ActivityCompat.checkSelfPermission(c, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(c, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            } else {
                lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 10, locationListener);
            }
        }
        private final LocationListener locationListener = new LocationListener() {
            public void onLocationChanged(Location location) {

                 longitude = location.getLongitude();
                 latitude = location.getLatitude();

                Log.v(TAG, ""+longitude + "                       " +latitude);

            }
@Override
        public void onStatusChanged(String provider, int status, Bundle extras) {} 
        @Override
        public void onProviderEnabled(String provider) {} 
        @Override
        public void onProviderDisabled(String provider) {}
    };

我从其他地方打电话给registerListener()。问题是,我的位置更新只被调用一次,而且我只得到该日志一次。此外,日志仅在 调用 registerListener 之后大约 5-10 秒出现。

速度慢是什么原因,为什么不更新位置?

谢谢,

鲁基尔

【问题讨论】:

标签: java android database performance optimization


【解决方案1】:

您正在请求 GPS 位置。第一次获得卫星锁定需要几秒钟。如果您无法接收信号锁定(在某些建筑物的室内,地下太远,手机物理损坏,如天线松动(在早期的三星中很常见)),则可能永远不会发生。

至于不再收到它-除非您移动至少 10 米,否则您将不会再次收到它。将其更改为 0 并看到它每秒出现一次。

【讨论】:

  • 谢谢加布。我对最初的 GPS 时间有疑问。我的应用程序需要很长时间。我能做些什么来减少这个时间吗?
  • 另外,第二个参数是什么意思? 1000.
  • 第二个参数是更新之间的最短时间。因此,如果您使用 1000,它每秒最多会更新一次。
  • 至于减少时间- 不多。它实际上必须向外太空发送信号。这需要时间。您可以调用 getLastKnownLocation 并查看它是否不为空,如果是,则将其用作初始值,只是不要依赖它在那里。根据您的应用,您或许可以提前开启更新,但无论何时启动该过程都需要一些时间。
  • 是的,它使用了距离和时间要求的 AND。所以如果你把它设置为 2 天,你可以飞到欧洲而它不会着火。
猜你喜欢
  • 2011-07-15
  • 2018-02-08
  • 1970-01-01
  • 1970-01-01
  • 2015-05-17
  • 2012-08-19
  • 2021-01-17
  • 2019-02-19
  • 1970-01-01
相关资源
最近更新 更多