java - Android:FusedLocationProvider,每隔几秒获取一次位置
问题描述
我正在制作一个跟踪用户位置并最终将其上传到 Firebase 服务器的应用程序。
我创建了一个简单的应用程序,当我按下屏幕上的按钮时会显示位置。问题是当我走了几米后再次按下它时它不会改变位置(但当我重新进入应用程序时我确实得到了一个新位置)。为了让应用每 X 秒更新一次位置,我需要添加什么?这是我的活动:
package com.example.gpstest;
import android.content.pm.PackageManager;
import android.location.Location;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.tasks.OnSuccessListener;
import static android.Manifest.permission.ACCESS_FINE_LOCATION;
public class MainActivity extends AppCompatActivity {
private FusedLocationProviderClient client;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
requestPermission();
client = LocationServices.getFusedLocationProviderClient(this);
Button button = findViewById(R.id.getLocation);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (ActivityCompat.checkSelfPermission(MainActivity.this, ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED ) {
return;
}
client.getLastLocation().addOnSuccessListener(MainActivity.this, new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
if(location != null){
TextView lat = findViewById(R.id.location1);
TextView lon = findViewById(R.id.location2);
TextView alt = findViewById(R.id.location3);
lat.setText(Double.toString(location.getLatitude()));
lon.setText(Double.toString(location.getLongitude()));
alt.setText(Double.toString(location.getAltitude()));
}
}
});
}
});
}
private void requestPermission(){
ActivityCompat.requestPermissions(this, new String[]{ACCESS_FINE_LOCATION}, 1);
}
}
解决方案
因为您从 getLastLocation 获取位置。为此,您必须实现 LocationCallback。
考虑这个链接了解更多信息
推荐阅读
- python - node进程和python子进程之间的双向通信
- java - 我在哪里放置我的资源文件以使其在 Spring 中使用类路径可读?
- java - 本地开发不能禁用 Spring 配置服务器
- apache - htaccess 错误页面文件不适用于重写条件
- python - Python 2D 数组/列表分配给出了不需要的结果
- facebook - 为什么我无法在 Instagram API 中生成用户令牌?
- python - 在Django中单击like按钮时出错
- react-native - dispatch 不调用reducer React Native
- python - 在 pandas 中用较短的名称替换所有行值
- tensorflow - 超过两个输入的 TF BERT 输入打包器