关于onLocationChange的误解

时间:2013-04-08 10:16:03

标签: android locationlistener

我来简要介绍一下背景。

我需要在一段时间后或在一段距离之后检查用户位置。所以我使用LocationListner类来跟踪位置。要在模拟器上测试它,我已经在.gpx文件上创建了设置方向。我正在按钮点击上获取模拟器上的位置。但是我将如何根据距离或时间获取更新的位置。 如develper.adnroid所述

You can control the frequency at which your listener receives updates with the second 
and third parameter—the second is the minimum time interval between notifications and
the third is the minimum change in distance between notifications—setting both to
zero requests location notifications as frequently as possible.

但我没有得到预期的结果。有没有人知道我在做什么???

代码段

在按钮上单击此代码执行

    LocationManager locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
            MyLocationListener locListener = new MyLocationListener(this, locManager);
            boolean isGPSEnabled = locManager.isProviderEnabled(LocationManager.GPS_PROVIDER); 
            if (isGPSEnabled) 
            {
                Toast.makeText(getApplicationContext(), "Called isGPSEnabled", Toast.LENGTH_SHORT).show();
                locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 120000, 0, locListener);
                } 

仅供参考:如果被叫,请在里面吐司。

这是我的onLoactionChange。仅作为rest方法添加此方法为空。

@Override
    public void onLocationChanged(Location location) 
    {
           if(location != null)
        {
            locManager.removeUpdates(this);

            Geocoder gcd = new Geocoder(context.getApplicationContext(), Locale.getDefault());       
            List<Address>  addresses; 
            try
            {  
                addresses = gcd.getFromLocation(location.getLatitude(), location.getLongitude(), 1);  
                if (addresses.size() > 0)
                {
                    String cityName = addresses.get(0).getAddressLine(0) + "\n";
                    cityName = cityName + addresses.get(0).getAddressLine(1);
                    TextView tvInfo = (TextView) ((Activity) context).findViewById(R.id.tv_info);
                    tvInfo.setVisibility(View.VISIBLE);
                    tvInfo.setText("Curent address is" + cityName + "Latitude :" + addresses.get(0).getLatitude() + "Longitude :" +addresses.get(0).getLongitude());
                }
            } catch (IOException e) 
            {           
                //Toast
                Toast.makeText(context.getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
                e.printStackTrace();  
            } 
        }
    }

清单具有

权限
   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
     <uses-permission android:name="android.permission.INTERNET" />

结果: 单击按钮后,它将显示当前位置。但只是一直都是这样。

预期结果:在一段时间或一段距离之后移动当前位置应该更新。

任何博德都可以帮助我实现这一目标。或指出我在哪里做错了。??

1 个答案:

答案 0 :(得分:0)

似乎我需要删除locManager.removeUpdates(this);

删除此行使我的应用程序能够在模拟器上接收更新。