Running a service to get location details

前端 未结 3 1810
日久生厌
日久生厌 2021-02-11 02:25

In my app, i need to create an android service to periodically get mobile user\'s current location(latitude and longitude). The service should get user\'s location in every 5 mi

相关标签:
3条回答
  • 2021-02-11 03:10
     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)
            {
            }
    
        }
    
    0 讨论(0)
  • 2021-02-11 03:12

    You can write a private/internal class(within your service) that implements locationListener and in the onStart meethod of your service you can requestLocationUpdates which will be listened by your listener

    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    MyLocationListener listener = new MyLocationListener();
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, minTime, minDistance, listener);
    
    0 讨论(0)
  • 2021-02-11 03:14

    You don't need a service to accomplish this. In order to get location every 5mins, in your app, on the activity you can implement the location listener. While setting up the location manager, you can specify the minTime = 5mins (300000 ms). The onlocationChanged method will be called every 5 mins or when the distance change > minDistance, which ever occurs first.

    LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
    MyLocationListener listener = new MyLocationListener();
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 300000, minDistance, listener);
    
    0 讨论(0)
提交回复
热议问题