gpt4 book ai didi

android - 它是如何工作的 - requestLocationUpdates() + LocationRequest/Listener

转载 作者:IT老高 更新时间:2023-10-28 21:40:52 34 4
gpt4 key购买 nike

我是新的 Android 编码员,我在请求本地化更新时遇到问题。

我正在使用来自 http://developer.android.com/training/location/receive-location-updates.html 的教程.

我的应用程序可以处理异常,正确获取纬度和经度,地理编码器可以处理显示地址。但我只要求位置一次 - 或者当位置发生变化时。我想做时间间隔。现在我开始实现教程中的代码,它看起来像这样:

public class MainActivity extends Activity implements 
GooglePlayServicesClient.ConnectionCallbacks,
GooglePlayServicesClient.OnConnectionFailedListener,
LocationListener {

private static final int MILLISECONDS_PER_SECOND = 1000;

public static final int UPDATE_INTERVAL_IN_SECONDS = 5;
private static final long UPDATE_INTERVAL =
MILLISECONDS_PER_SECOND * UPDATE_INTERVAL_IN_SECONDS;

private static final int FASTEST_INTERVAL_IN_SECONDS = 1;
private static final long FASTEST_INTERVAL =
MILLISECONDS_PER_SECOND * FASTEST_INTERVAL_IN_SECONDS;

private TextView tvStatus;
private TextView tvLatitude;
private TextView tvLongitude;

LocationRequest mLocationRequest;
LocationClient mLocationClient;
Location mCurrentLocation;

boolean bNetworkEnabled;
boolean bGPSEnabled;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);
tvStatus = (TextView)findViewById(R.id.tvStatus);
tvLatitude = (TextView)findViewById(R.id.tvLatitude);
tvLongitude = (TextView)findViewById(R.id.tvLongitude);

mLocationRequest = LocationRequest.create();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(UPDATE_INTERVAL);
mLocationRequest.setFastestInterval(FASTEST_INTERVAL);
mLocationClient = new LocationClient(this, this, this);

checkProviders();
}

因此已经实现了间隔和位置请求。但是在我之前给出的链接中有一条评论说我应该在某处使用 requestLocationUpdates() (可能是 onCreate()onStart() 和删除 onStop()) 上的请求,但我有问题。所以,Eclipse 向我展示了 3 种方法:

requestLocationUpdates(LocationRequest request, LocationListener listener)
requestLocationUpdates(LocationRequest request, PendingIntent CallbackIntent)
requestLocationUpdates(LocationRequest request, LocationListener listener, Looper looper)

所以我认为第一个在这个地方是最正确的。我应该在 LocationListener 插槽中放置什么?我寻求帮助,但几乎没有解释它是如何工作的。

最佳答案

您正在 Activity MainActivity 中实现 LocationListener。因此,并发位置更新的调用将是这样的:

mLocationClient.requestLocationUpdates(mLocationRequest, this);

确保您正在实现的 LocationListener 来自 google api,即导入:

import com.google.android.gms.location.LocationListener;

不是这个:

import android.location.LocationListener;

它应该可以正常工作。

在您执行此操作之前,LocationClient 确实已连接也很重要。我建议你不要在 onCreate 或 onStart 方法中调用它,而是在 onResume 中调用它。 Google Location Api 的教程中对此进行了很好的解释:https://developer.android.com/training/location/index.html

关于android - 它是如何工作的 - requestLocationUpdates() + LocationRequest/Listener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16898675/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com