- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有这个方法,它管理我的位置:
@Override
public void onLocationChanged(final Location location) {
if(inRun){
Clocation myLocation = new Clocation(location, this.useMetricUnits());
this.updateSpeed(myLocation);
this.updateDistance(myLocation);
this.updateAverageSpeed(this.distance, this.chronometer);
if (activity.getText().toString() != ActivityRecongnizedService.getActivity()) {
activity.setText(ActivityRecongnizedService.getActivity());
activityTimer.start();
}
switch (activity.getText().toString()) {
case "STILL": still = true; break;
case "IN VEHICLE": inVehicle = true; break;
case "ON BICYCLE": onBicycle = true; break;
case "ON FOOT": onFoot = true; break;
case "RUNNING": running = true; break;
case "WALKING": walking = true;break;
case "TILTING": tilting = true; break;
}
setTimeActivity();
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String[] key;
key = user.getEmail().split("@");
reference.child("Position").child(key[0]).child("latlng").setValue(new LatLng(location.getLatitude(),location.getLongitude()));
}
}
但我希望此方法在 MainActivity 关闭时运行。我读到了这件事,有两种方法可以做到这一点:使用服务或使用 onStop 方法。
我更喜欢第二种方式,用onStop方法,但我不知道如何在onStop方法中调用onLocationChanged。
最佳答案
希望对您有所帮助。在 Android 中,有位置管理器,它提供对系统位置服务的访问。您可以使用此类触发 onLocationChanged
事件。
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
// Get the best provider for the criteria
Criteria criteria = new Criteria();
criteria.setPowerRequirement(Criteria.POWER_LOW);
criteria.setAccuracy(Criteria.ACCURACY_FINE);
String bestprovider = locationManager.getBestProvider(criteria,false);
locationManager.requestLocationUpdates(bestprovider,0, 0, this);
如果您在 onStop
方法中插入部分代码,将触发 onLocationChanged
事件。
关于java - 如何在应用程序关闭时运行 onLocationChanged 方法(使用 onStop 方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56608364/
当程序在前台运行时,它工作正常。只有当某些其他应用程序在前台运行并且我的程序在后台运行时,onlocationchanged 才会停止调用。 这不会立即发生,但在将应用程序切换到后台后仍会相对较快。说
我正在尝试制作一个需要使用GPS的应用程序。所以我写了一个启动服务的MainActivity。该服务使用融合位置提供程序获取位置。所以我的观点是定期获取位置,我使用requestedLocationU
如果我理解正确,在这段代码中,我的代码 onLocationChanged 方法应该每 1m 或 0.4sec 自动调用一次,因为我设置了 locationManager.requestLocatio
在 LocationChanged 监听器上不起作用。 import android.app.Activity; import android.content.Context; import andr
现在我正在使用基于位置的应用程序,但我的问题是位置未在真实设备上更新。那是 onLocationChanged 在真实设备上不工作。但在模拟器上没问题。 locmngr=(LocationMa
我使用的是精确的代码形式 developer.android.com/但它似乎不是 100% 有效,我昨天使用相同的代码并且有效。我拥有所需的所有权限。 我已经添加了 ACCESS_COARSE_
OnLocationChanged 多次触发并导致堆栈溢出。 这里是导入: import com.google.android.gms.common.ConnectionResult; import
我正在使用 FusedLocationApi 获取更新。但是尽管将 LocationRequest.setInterval 设置为 500 甚至 200 毫秒,但我每秒只能获得一次更新。如果可能的话,
我正在编写一个基于位置的 Android 应用程序,我在其中应用位置监听器来捕获 GPS 坐标、速度和覆盖距离。问题是我的“onLocationChanged”回调函数在每个时间间隔被调用两次,导致将
我已经实现了应该返回当前位置的代码。 首先是代码: public static double[] getLocation(Context context) { double[] res
我正在创建一个应用程序,它通过网络广播用户的位置,为此我创建了一个服务,我在其中使用 LocationListener 并从中获取更新onLocationChanged 我已经设置了requestLo
尝试在 requestLocationUpdate 指定的时间内获取位置。但是 OnLocationChanged 事件在不同的设备上以不同的时间间隔调用 初始化位置管理器 private
我正在尝试将标记添加到我设备的当前位置。无论我尝试什么,onLocationChanged 方法都会在我启动应用程序时触发一次。 public class MapsActivity extends F
我写了以下服务,想法是在应用程序启动时将用户位置发送到服务器,当用户移动超过 500m 时,问题是在启动时调用 onLocationChanged 3 次。 我无法理解它从哪里调用它 3 次。请指导我
OnLocationChanged() 未被调用,但添加了 requestLocationUpdates,因此 map 未显示其当前位置。 map 始终显示其默认的模拟位置。请建议克服这个问题。我已经
我正在尝试使用 LocationManager 查找我的设备的位置; onLocationChanged() 方法无论我尝试什么都不会被调用(尝试使用模拟位置应用程序更改位置,尝试关闭并在手机上尝试运
我有一个同时使用网络和 gps 作为提供者的跟踪设备。 但是,有时提供商会向我发送一个偏离标记的位置。我该如何解决这个问题? // The minimum distance to change
我一直在尝试创建一个与 map 相关的 android 应用程序,但我意识到我的应用程序的 onLocationChanged 尚未被调用,因此 map 始终停留在默认区域(美国)。 我的代码: pu
我已经为我的 LocationManager 注册了位置更新,每 10 秒 mgr.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1
我对 Android 中的 onLocationChanged 事件有疑问。这是触发: case R.id.start: { Points.add(overlay.getMyLocation(
我是一名优秀的程序员,十分优秀!