java - 无论我身在何处,我的应用程序都会返回相同的位置
问题描述
所以我希望我的应用程序能够跟踪手机的位置。我正在使用 FusedLocationProviderClient 来获取位置。一个人单击一个按钮,然后我的应用程序运行一个 trackLocation() 函数。但是,无论我身在何处,我的功能都会返回相同的经度和纬度。这是trackLocation:
private void trackLocation(){
button.setText("Tracking");
fusedLocationClient= LocationServices.getFusedLocationProviderClient(MainActivity.this);
if(ContextCompat.checkSelfPermission( MainActivity.this,android.Manifest.permission.ACCESS_COARSE_LOCATION ) != PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(
MainActivity.this,
new String [] { Manifest.permission.ACCESS_COARSE_LOCATION,android.Manifest.permission.ACCESS_FINE_LOCATION },
1
);
}
fusedLocationClient.getLastLocation().addOnSuccessListener(MainActivity.this, new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
double latitude=location.getLatitude();
double longitude=location.getLongitude();
TextView textView=findViewById(R.id.textView);
String latText=Double.toString(latitude);
String longText=Double.toString(longitude);
textView.setText(latText+" "+longText);
}
});
}
先感谢您。
解决方案
试试这个来获取位置更新。您需要调用此函数以定期获取更新。根据您的喜好设置间隔。
private LocationRequest locationRequest;
private LocationCallback locationCallback;
locationRequest = LocationRequest.create();
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationRequest.setInterval(20 * 1000);
locationCallback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
if (locationResult == null) {
return;
}
for (Location location : locationResult.getLocations()) {
if (location != null) {
wayLatitude = location.getLatitude();
wayLongitude = location.getLongitude();
}
}
}
};
推荐阅读
- python - 如何修改matplotlib中的图例和背景?
- sql - 将行连接成一定长度的字符串
- python - Pandas dataframe.to_html() - 编辑文本颜色并添加标题列的背景颜色
- html - 如何将单元格内的 HTML 文本查看到谷歌表格中的新 html 选项卡
- python - 遍历 pandas 行,寻找一个特定的数字并计算我们遇到它的次数
- elasticsearch - 如何过滤具有相同嵌套属性值的文档
- mongodb - MongoDb 使用聚合时的排序问题
- spring-boot - @RestControllers 中有 @before 和 @after 的等价物吗?
- python - 在网络抓取时捕获连接错误等
- regex - 用于 unix 纪元时间戳的 Notepad++ 正则表达式