Android 我想在谷歌地图api中每30秒触发一次当前位置

Android 我想在谷歌地图api中每30秒触发一次当前位置,android,Android,需要在此方法中添加 私有void getCurrentLocation(){ //创建位置对象 if(ActivityCompat.checkSelfPermission(this,android.Manifest.permission.ACCESS\u FINE\u LOCATION)!=PackageManager.permission\u已授予和&ActivityCompat.checkSelfPermission(this,android.Manifest.permission.ACCE

需要在此方法中添加
私有void getCurrentLocation(){
//创建位置对象
if(ActivityCompat.checkSelfPermission(this,android.Manifest.permission.ACCESS\u FINE\u LOCATION)!=PackageManager.permission\u已授予和&ActivityCompat.checkSelfPermission(this,android.Manifest.permission.ACCESS\u LOCATION)!=PackageManager.permission\u已授予){
考虑到呼叫
//ActivityCompat#请求权限
//在此处请求缺少的权限,然后覆盖
//public void onRequestPermissionsResult(int-requestCode,字符串[]权限,
//int[]格兰特结果)
//处理用户授予权限的情况。请参阅文档
//对于ActivityCompat,请请求权限以获取更多详细信息。
回来
}
Location Location=LocationServices.FusedLocationApi.getLastLocation(GoogleAppClient);
如果(位置!=null){
//获取经纬度
longitude=location.getLongitude();
纬度=位置。getLatitude();
//将地图移动到指定位置
moveMap();
}

}
如果您只想每隔一段时间运行此方法,请尝试java类
定时器

int delay = 5000;   // delay for 5 sec.
int interval = 30000;  // iterate every 30 sec.
Timer timer = new Timer();

timer.scheduleAtFixedRate(new TimerTask() {
      public void run() {
          getCurrentLocation // Your method from above .. 
      }
  }, delay, interval);

欢迎光临,您可以看看。更具体地说,你需要使用谷歌服务的GPS定位。Google maps API仅提供地图活动(除非我错了?),也可以根据我们的情况回答您:您只需使用LocationListener每隔30秒自动询问一个事件,注册方法的一个参数在定位之间花费时间。这将更加节能。这将不会使用谷歌服务,这将只使用您询问的LocationListener,但这将超出我的想象,但如果我开始移动,它将显示相同的经度和纬度值……请帮助@Koperko
LoactionListener mLocationListener;
double lat,lng;


inside your OnCreateMethod :




mLocationListener = new LocationListener() {
            @Override
            public void onLocationChanged(Location location) {
                lat = location.getLatitude();
                lng = location.getLongitude();

            }

            @Override
            public void onStatusChanged(String s, int i, Bundle bundle) {

            }

            @Override
            public void onProviderEnabled(String s) {

            }

            @Override
            public void onProviderDisabled(String s) {

            }
        };



if (mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) || mLocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
            try {

                if (ActivityCompat.checkSelfPermission(getApplicationContext(), android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getApplicationContext(), android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                    // TOD
                    //    ActivityCompat#requestPermissions
                    // here to request the missing permissions, and then overriding
                    //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
                    //                                          int[] grantResults)
                    // to handle the case where the user grants the permission. See the documentation
                    // for ActivityCompat#requestPermissions for more details.


                    // Not implementing Permission Request Measures as User Should not know he is being tracked

                }


                Criteria c = new Criteria();
                c.setAccuracy(Criteria.ACCURACY_FINE);
                c.setAltitudeRequired(false);
                c.setBearingRequired(false);
                c.setSpeedRequired(false);


                // mLocationManager.requestSingleUpdate(c, mLocationListener, getMainLooper());

                mLocationManager.requestLocationUpdates(REFRESH_TIME, REFRESH_DISTANCE, c, mLocationListener, getMainLooper()); //Check if this can give us location updates on change in locations


            } catch (Exception e) {
                Log.d(TAG, " Exception e" + e.toString());
            }
        }else{
            Log.d(TAG,"Location permission are disabled in service");
        }



now using the Koperko solution
int delay = 5000;   // delay for 5 sec.
int interval = 30000;  // iterate every 30 sec.
Timer timer = new Timer();

timer.scheduleAtFixedRate(new TimerTask() {
      public void run() {
          mFragment.getMapAsync(Context);                         // The object of your own map support fragment
      }
  }, delay, interval);



inYour onMapReady method
use
LatLng mLatLng=new LatLng(lat,lng);
Marker marker = mGoogleMap.addMarker(new MarkerOptions().position(mLatLng));