【问题标题】:Running a service to get location details运行服务以获取位置详细信息
【发布时间】:2011-03-03 10:43:39
【问题描述】:

在我的应用程序中,我需要创建一个 android 服务来定期获取移动用户的当前位置(纬度和经度)。该服务应每 5 分钟获取一次用户的位置。我如何在后台运行的 android 服务中执行此操作。这是正确的方法吗?

【问题讨论】:

  • @Reno:也许,这完全取决于他使用它的目的以及他对用户的承诺。信息没有好坏之分;只需使用该信息即可。
  • 到底是什么问题。这是一个很长的问题......
  • 在我的应用程序中,我需要创建一个 android 服务来定期获取移动用户的当前位置(纬度和经度)。该服务应该每 5 分钟获取一次用户的位置。

标签: android


【解决方案1】:

您可以编写一个实现 locationListener 的私有/内部类(在您的服务内),并且在您的服务的 onStart 方法中,您可以请求LocationUpdates 将由您的侦听器侦听

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
MyLocationListener listener = new MyLocationListener();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, minTime, minDistance, listener);

【讨论】:

    【解决方案2】:
     LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);   
          LocationListener mlocListener = new MyLocationListener();
          mlocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, mlocListener);
    }
     public class MyLocationListener implements LocationListener
        {
    
    
            @Override
            public void onLocationChanged(Location loc)
            {
                Log.i("**************************************", "Location changed");
    
                loc.getLatitude();
                loc.getLongitude(); 
                String Text = "My current location is: " +"Latitude = " + loc.getLatitude() + "Longitude = " + loc.getLongitude();             
                Toast.makeText( getApplicationContext(), Text, Toast.LENGTH_SHORT).show();
            }
    
            @Override
            public void onProviderDisabled(String provider)
            {
                Toast.makeText( getApplicationContext(), "Gps Disabled", Toast.LENGTH_SHORT ).show();
            }
    
            @Override
            public void onProviderEnabled(String provider)
            {
                Toast.makeText( getApplicationContext(), "Gps Enabled", Toast.LENGTH_SHORT).show();
            }
    
            @Override
            public void onStatusChanged(String provider, int status, Bundle extras)
            {
            }
    
        }
    

    【讨论】:

      【解决方案3】:

      您不需要服务即可完成此操作。为了每 5 分钟获取一次位置,在您的应用程序中,您可以在 Activity 上实现位置侦听器。在设置位置管理器时,您可以指定minTime = 5mins (300000 ms)。 onlocationChanged 方法将每 5 分钟调用一次,或者当距离 change > minDistance 时调用,以先发生者为准。

      LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
      MyLocationListener listener = new MyLocationListener();
      locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 300000, minDistance, listener);
      

      【讨论】:

        猜你喜欢
        • 2017-01-12
        • 1970-01-01
        • 2014-07-18
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多