How to get gps location once for 5 mins android?

前端 未结 4 1831
独厮守ぢ
独厮守ぢ 2021-02-01 10:55

hi there can anybody give me a sample code for get location for every five minutes please i have tried and i can get location once by cliking on button, but i need it to be disp

相关标签:
4条回答
  • 2021-02-01 11:14

    Here is the code for getting location and set the listener for gps to get current location on few minute and distance, also I have used runnable object to get the location on every few minutes.

    Location gpslocation = null;
    
    private static final int GPS_TIME_INTERVAL = 60000; // get gps location every 1 min
    private static final int GPS_DISTANCE= 1000; // set the distance value in meter
    
    /*
       for frequently getting current position then above object value set to 0 for both you will get continues location but it drown the battery
    */
    
    private void obtainLocation(){
    if(locMan==null)
        locMan = (LocationManager) getSystemService(LOCATION_SERVICE);
    
        if(locMan.isProviderEnabled(LocationManager.GPS_PROVIDER)){
            gpslocation = locMan.getLastKnownLocation(LocationManager.GPS_PROVIDER);
            if(isLocationListener){
                 locMan.requestLocationUpdates(LocationManager.GPS_PROVIDER, 
                            GPS_TIME_INTERVAL, GPS_DISTANCE, GPSListener);
                    }
                }
            }
    }
    

    Now use this method to get the current location and the listener was called on location change with every 1 min and 1000 meter of distance.

    For getting every 5 min you can use this handler and runnable to get this location on well set period time:

    private static final int HANDLER_DELAY = 1000*60*5;
    
    Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
            public void run() {
                myLocation = obtainLocation();
                handler.postDelayed(this, HANDLER_DELAY);
            }
        }, START_HANDLER_DELAY);
    

    Here is GPS listener for location change event:

    private LocationListener GPSListener = new LocationListener(){
        public void onLocationChanged(Location location) {
            // update location
            locMan.removeUpdates(GPSListener); // remove this listener
        }
    
        public void onProviderDisabled(String provider) {
        }
    
        public void onProviderEnabled(String provider) {
        }
    
        public void onStatusChanged(String provider, int status, Bundle extras) {
        }
    };
    

    You can set interval time for listener and handler same for getting GPS location.

    0 讨论(0)
  • 2021-02-01 11:15

    I used runnable for doing this,

        final Runnable r = new Runnable() {
            public void run() {
        //Here add your code location listener call
        handler.postDelayed(this, 300000 );
            }
        };
    
        handler.postDelayed(r, 300000 );
    
    0 讨论(0)
  • 2021-02-01 11:15

    try like this:

     private Handler handler = new Handler(); 
    
     handler.postDelayed(runnable, 300000);
    
     private Runnable runnable = new Runnable() {   
        public void run() {
            if (location != null) {
    
                onLocationChanged(location);
            } else {
                System.out.println("Location not avilable");
            }
    
            handler.postDelayed(this, 300000);
        } 
    };
    
    0 讨论(0)
  • 2021-02-01 11:39

    Hi Use the below timer code.

    You can use the below options option 1 this will get the locations if mobile moved 100meters.

        captureFrequencey=3*60*1000;   
    LocationMngr.requestLocationUpdates(LocationManager.GPS_PROVIDER, captureFrequencey, 100, this);
    

    have a look at this link http://developer.android.com/reference/android/location/LocationManager.html#requestLocationUpdates%28java.lang.String,%20long,%20float,%20android.location.LocationListener%29

    Option 2

       TimerTask refresher;
            // Initialization code in onCreate or similar:
            timer = new Timer();    
            refresher = new TimerTask() {
                public void run() {
                  handler.sendEmptyMessage(0);
                };
            };
            // first event immediately,  following after 1 seconds each
            timer.scheduleAtFixedRate(refresher, 0,1000); 
            //=======================================================
    
    
    final Handler handler = new Handler() {
    
    
            public void handleMessage(Message msg) {
                  switch (msg.what) {
                  case REFRESH: 
                      //your code here 
    
                      break;
                  default:
                      break;
                  }
              }
            };
    

    Timer will call the handler for your time duration (change 1000 into your required time ).

    Hope this will help you.

    0 讨论(0)
提交回复
热议问题