代码之家  ›  专栏  ›  技术社区  ›  maxsap

安卓GPS定位监听器

  •  0
  • maxsap  · 技术社区  · 15 年前

    我正在开发一个位置感知应用程序,需要知道用户的位置。 问题是应用程序似乎无法正常工作。

    正确地说,我的意思是,每次我必须先打开一个应用程序(如有氧运动教练)才能获得GPS信号,然后运行我的程序,否则,通知栏上的GPS图标会闪烁,就像设备尝试获取GPS信号时它会闪烁一样,过一段时间它就会停止,并且不会返回任何位置!

    这真的很奇怪,因为它不应该停止,有没有一个间隔,安卓提供全球定位系统,以获取信号?

    在文件上我什么也没发现。

    我的代码如下:

    lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 10, locationListenerGps);
    LocationListener locationListenerGps = new LocationListener() {
        public void onLocationChanged(Location location) {
            locationResult.gotLocation(location);
            Log.e("##################","MyLocation got GPS location accuracy:
            "+location.getAccuracy()+" Altitute: "+location.getAltitude()+" log:
            "+location.getLongitude()+" lat: "+location.getLatitude());
         }
        public void onProviderDisabled(String provider) {}
        public void onProviderEnabled(String provider) {}
        public void onStatusChanged(String provider, int status, Bundle extras) {}
      };
    

    这应该会打开GPS提供程序并注册一个名为locationListenerGps的侦听器,位置管理器每1分钟或10米调用一次,对吗?

    为什么我要先打开心肺训练器才能得到GPS信号?

    1 回复  |  直到 12 年前
        1
  •  0
  •   Austyn Mahoney Janak    15 年前

    尝试在侦听器中放置以下调试代码,以查看何时启用或禁用位置提供程序。这将告诉你,当你的提供商改变状态,可能会对你的应用程序运行时发生的事情有所了解。

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        switch (status) {
        case LocationProvider.TEMPORARILY_UNAVAILABLE:
            Toast.makeText(mCtx, "Your location is temporarily unavailable",
                    Toast.LENGTH_SHORT).show();
            break;
        case LocationProvider.OUT_OF_SERVICE:
            Toast.makeText(mCtx, "Your location is now unavailable", Toast.LENGTH_SHORT)
                    .show();
            break;
        case LocationProvider.AVAILABLE:
            Toast.makeText(mCtx, "Your location is now available", Toast.LENGTH_SHORT)
                    .show();
        }
    }