- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我如何使用 locationclient
类和 requestLocationUpdates(LocationRequest, LocationListener)
在 android 中获取位置更新?我尝试了以下代码,但它不起作用。谁能帮我这个?哪里错了,先谢谢了。
public class MainActivity extends FragmentActivity implements GooglePlayServicesClient.ConnectionCallbacks,GooglePlayServicesClient.OnConnectionFailedListener {
private final static int CONNECTION_FAILURE_RESOLUTION_REQUEST = 9000;
LocationClient mLocationClient;
Location mCurrentLocation;
LocationRequest mLocationRequest;
ArrayList<Location> list = new ArrayList<Location>();
private static String msg;
private static final int MILLISECONDS_PER_SECOND = 1000; // Milliseconds per second
public static final int UPDATE_INTERVAL_IN_SECONDS = 300;// Update frequency in seconds
private static final long UPDATE_INTERVAL = MILLISECONDS_PER_SECOND * UPDATE_INTERVAL_IN_SECONDS; // Update frequency in milliseconds
private static final int FASTEST_INTERVAL_IN_SECONDS = 60; // The fastest update frequency, in seconds
// A fast frequency ceiling in milliseconds
private static final long FASTEST_INTERVAL = MILLISECONDS_PER_SECOND * FASTEST_INTERVAL_IN_SECONDS;
//private EditText text;
public static class ErrorDialogFragment extends DialogFragment {
private Dialog mDialog;
public ErrorDialogFragment() {
super();
mDialog = null; // Default constructor. Sets the dialog field to null
}
public void setDialog(Dialog dialog) {
mDialog = dialog; // Set the dialog to display
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return mDialog; // Return a Dialog to the DialogFragment.
}
}
private final class MyLocationListener implements LocationListener {
@Override
public void onLocationChanged(Location location) {
// Report to the UI that the location was updated
mCurrentLocation =location;
Context context = getApplicationContext();
msg = Double.toString(location.getLatitude()) + "," + Double.toString(location.getLongitude());
list.add(mCurrentLocation);
Toast.makeText(context, msg,Toast.LENGTH_LONG).show();
}
}
@Override
protected void onActivityResult(
int requestCode, int resultCode, Intent data) {
// Decide what to do based on the original request code
switch (requestCode) {
case CONNECTION_FAILURE_RESOLUTION_REQUEST :
/*
* If the result code is Activity.RESULT_OK, try
* to connect again
*/
switch (resultCode) {
case Activity.RESULT_OK :
/*
* Try the request again
*/
break;
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mLocationClient = new LocationClient(this, this, this); /* Create a new location client, using the enclosing class to handle callbacks */
mLocationClient.connect();
mLocationRequest = LocationRequest.create();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); // Use high accuracy
mLocationRequest.setInterval(UPDATE_INTERVAL); // Setting the update interval to 5mins
mLocationRequest.setFastestInterval(FASTEST_INTERVAL); // Set the fastest update interval to 1 min
LocationListener locationListener = new MyLocationListener();
mLocationClient.requestLocationUpdates(mLocationRequest,locationListener);
}
@Override
protected void onDestroy() {
mLocationClient.disconnect();
}
/* Called by Location Services when the request to connect the client finishes successfully. At this point, you can request the current location or start periodic updates */
@Override
public void onConnected(Bundle dataBundle) {
}
/* Called by Location Services if the connection to the location client drops because of an error.*/
@Override
public void onDisconnected() {
Toast.makeText(this, "Disconnected. Please re-connect.",
Toast.LENGTH_SHORT).show();
}
//Called by Location Services if the at tempt to Location Services fails.
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
/*
* Google Play services can resolve some errors it detects.If the error has a resolution, try sending an Intent to start a Google Play services activity that can resolve
* error. */
if (connectionResult.hasResolution()) {
try {
// Start an Activity that tries to resolve the error
connectionResult.startResolutionForResult(this,CONNECTION_FAILURE_RESOLUTION_REQUEST);
/*
* Thrown if Google Play services canceled the original
* PendingIntent
*/
} catch (IntentSender.SendIntentException e) {
e.printStackTrace();
}
} else {
/* * If no resolution is available, display a dialog to the user with the error. */
showErrorDialog(connectionResult.getErrorCode());
}
}
private boolean showErrorDialog(int errorCode) {
int resultCode =
GooglePlayServicesUtil.
isGooglePlayServicesAvailable(this);
// If Google Play services is available
if (ConnectionResult.SUCCESS == resultCode) {
// In debug mode, log the status
// Continue
return true;
// Google Play services was not available for some reason
} else {
Dialog errorDialog = GooglePlayServicesUtil.getErrorDialog(errorCode,this,
CONNECTION_FAILURE_RESOLUTION_REQUEST);
// If Google Play services can provide an error dialog
if (errorDialog != null) {
// Create a new DialogFragment for the error dialog
ErrorDialogFragment errorFragment = new ErrorDialogFragment();
// Set the dialog in the DialogFragment
errorFragment.setDialog(errorDialog);
// Show the error dialog in the DialogFragment
errorFragment.show(getSupportFragmentManager(),"Location Updates");
} return false;
}
}
最佳答案
LocationClient.connect() 是异步的。在连接完成之前,您不能立即开始使用客户端方法。您应该在 onConnected 回调中调用 requestLocationUpdates(或者至少在回调被调用之后)。
关于android - 使用 LocationClient 获取位置更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16731717/
我在我的 Android 应用程序中使用 Google Maps Android API v2 LocationClient: http://developer.android.com/referen
您是否需要连接的 LocationClient 来检测用户是否离开了地理围栏?在我当前的代码中,我连接了 LocationClient,建立了地理围栏,然后断开了 LocationClient。然而,
我正在使用 LocationClient 来检索当前用户位置,并且我正在尝试创建一个具有距离值和更新间隔的 LocationRequest。 我的代码当前请求按更新间隔更新位置: mL
我正在使用效果很好的 LocationClient。现在我正在尝试创建模拟位置 (setMockMode(true) + setMockLocation(mockLoc)。但是我的 LocationL
所以基本上这是我的问题,我一直在关注此链接 http://developer.android.com/training/location/retrieve-current.html 而且似乎 ecli
来自GooglePlayServicesClient.ConnectionCallbacks当 LocationClient 断开连接时,应该调用 onDisconnected 文档。根据我的测试,我
我正在尝试为个人项目实现 LocationClient,不幸的是,在调用 LocationClient 的 connect() 方法时,它总是失败。我在模拟器上试过,然后在安卓设备上试过。关于 and
我正在使用 LocationClient 每分钟获取当前位置: mLocationRequest = LocationRequest.create(); mLocationRequest.setPri
我正在使用 AndroidStudio 并尝试使用 googleplayservices 进行地理编码。 我遵循了 android 教程: http://developer.android.com/g
我正在使用 google play services api 在我的应用程序中获取位置更新。但是,出于某种原因,当客户端连接时,client.getLastLocation() 不会更改其值。只有通过
我如何使用 locationclient 类和 requestLocationUpdates(LocationRequest, LocationListener) 在 android 中获取位置更新?
我正在尝试使用新的谷歌位置服务更新旧教程。我直接使用来自谷歌教程的代码,但是行 mLocationClient = new LocationClient(this,this,this);返回错误构造函
我需要知道从此方法返回的 Location 对象的更新频率以及它是基于时间、距离还是其他? 最佳答案 根据getLastLocation()文档它返回已知位置。 我认为它存储 LocationClie
自融合位置提供程序发布以来,我一直在使用它,我对它非常满意(比旧系统好得多)。但是当结合使用地理围栏和 LocationClient.lastKnownLocation() 时,我遇到了一个特殊问题。
我正在开发一个包含服务和 Activity 的应用程序。该服务使用 LocationClient 对象每分钟请求当前位置。该 Activity 使用另一个 LocationClient 对象在单击按钮
我正在尝试编写一个在后台运行并从 LocationClient (Google Map API Android V2) 接收位置更新的简单 Android 服务。问题是当屏幕关闭时,我的服务不再接收位
我正在考虑设置两个单独的警报来每小时收集用户的位置数据,一个警报每 59 分钟响一次以“连接”客户端,另一个警报实际获取位置然后断开客户端连接。 就电池生命周期而言,如果获取用户位置将成为应用程序的主
我正在使用新的 Google LocationClient 来检索地理位置。我需要获得每个点(位置)的速度。 我现在正在做的是: if (mLocationClient == null) {
是否可以使用 GooglePlayServices 或 LocationClient? 最佳答案 我想我来不及回答这个问题了。但没关系。因此,借助新的 API LocationSettingsRequ
更新到 Google Play 服务 6.5.87 后,我的应用由于缺少 LocationCLient 类而无法编译。 documentation link目前已损坏(404 Not Found) 我
我是一名优秀的程序员,十分优秀!