- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我只是想做一个简单的“教程”应用程序来获取我手机的位置(以了解稍后如何在其他应用程序中使用它),但我就是一无所获。
Android 开发人员教程: 首先,我遵循了 Android 开发人员网站 (developer.android.com/training/location/receive-location-updates.html) 中的教程。
就像那里指出的那样,我使用了 Location、LocationClient 和 LocationRequest,在 onCreate 中初始化(并设置它们)。 LocationClient在onStart和onStop中连接和断开。
我在连接后请求位置更新(在 onConnected 中)。我在进行此调用之前确认 GooglePlayServices 可用,但我仍然没有在“onLocationChanged”中收到任何更新。
GoogleApiClient:我注意到 LocationClient 已被弃用,而 LocationServices 是首选 (developer.android.com/reference/com/google/android/gms/location/LocationClient.html)。
如此处所示:https://developer.android.com/reference/com/google/android/gms/location/FusedLocationProviderApi.html ,我使用 GoogleApiClient 并将其设置为 LocationServices (也是 https://stackoverflow.com/a/25013850/3802589 )。因此,我将其全部设置为使用它,但我仍然没有获得有关该位置的任何更新。
onLocationChanged 如果有响应,它应该打印出来。我还放置了一个打印位置或“无”的按钮。
我使用 Google map 进行了检查,看看是否有问题,但一切正常。
构建.gradle
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.android.gms:play-services:5.0.77'
compile "com.android.support:support-v4:20.0.+"
}
list
...
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
...
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
...
代码
public class MyActivity extends Activity implements
GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener,
LocationListener {
private GoogleApiClient mLocationClient;
private Location mCurrentLocation;
LocationRequest mLocationRequest;
...
/* Constant fields - request interval */
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
mLocationClient = new GoogleApiClient.Builder(getApplicationContext())
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(UPDATE_INTERVAL);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setFastestInterval(FASTEST_INTERVAL);
}
@Override
protected void onStart() {
super.onStart();
mLocationClient.connect();
}
@Override
protected void onStop() {
super.onStop();
LocationServices.FusedLocationApi.removeLocationUpdates(mLocationClient, this);
mLocationClient.disconnect();
}
public void onClick(View view) {
if (mCurrentLocation != null) {
Log.i("Location", mCurrentLocation.toString());
} else {
Log.i("Location", "nothing");
}
}
@Override
public void onLocationChanged(Location location) {
Log.d("Location Update", "CHANGED");
mCurrentLocation = location;
}
@Override
public void onConnected(Bundle bundle) {
// Display the connection status
Toast.makeText(this, "Connected", Toast.LENGTH_SHORT).show();
if(servicesConnected()) {
LocationServices.FusedLocationApi.requestLocationUpdates(mLocationClient, mLocationRequest, this);
}
}
@Override
public void onConnectionSuspended(int i) {
Toast.makeText(this, "Disconnected. Please re-connect.",
Toast.LENGTH_SHORT).show();
}
日志
8948-8948/example.android.com.test D/Location Updates﹕ Google Play services is available.
8948-8948/example.android.com.test I/Location﹕ nothing
我觉得我可能忘记了一些非常简单的东西......但我就是看不到它而且我花了太多时间试图获得一个简单的位置......
我也许可以只使用 android.location API,但是......让我困扰的是这太难了(应该更容易)。
最佳答案
错误只是 wifi 没有打开......我没有意识到。
至于 GregM 所说的,如果我是正确的那是旧 API(其中大部分现在已弃用)并且如开发者网站 (https://developer.android.com/google/auth/api-client.html) 中所述,您必须使用 GoogleApiClient,如我的原始问题所示(对于回调也是如此)。
关于android - 使用 GoogleApiClient + LocationServices 不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25047910/
当位置可用时,我想返回当前的用户位置。 这是我的代码: fusedLocationClient = LocationServices.getFusedLocationProviderClient(th
我正在尝试创建一个 GPSTracker 类,我可以从一个 fragment 运行它来获取用户的 GPS 位置。我有一个运行良好,除了它需要愚蠢的棉花糖许可支持(我知道这并不愚蠢,我实际上喜欢它,但它
我正在尝试使用使用用户位置的 android studio 构建一个 android 应用程序。我正在尝试导入 google play services LocationServices api,但它
到目前为止受影响的设备: Xperia 1 II 小米红米 Note 7 使用:为了请求位置更新,我检查了位置设置事先是足够的。如果没有,我会显示一个小文本,表示服务必须为我的功能启用。如果用户点击它
我正在尝试使用以下代码获取我的 Android 应用程序的纬度和经度。 public class MainActivity extends AppCompatActivity { privat
我的代码是: if (mGoogleApiClient == null && checkGooglePlayService()) { Log.d(Utils.TAG_DEV + TAG
有人知道使用 LocationServices.GeofencingApi 的示例吗?我发现的所有 android 地理围栏示例都使用已弃用的 LocationClient 类。据我所知,可以使用 L
我正在尝试获取用户最后已知的位置。 连接 Google API 后,我调用我的函数: @Override public void onConnected(Bundle bundle) { in
我似乎做不到GoogleApiClient从事我的项目。我正在使用 LocationServices , OnConnected即使我有 client.connect() 也没有开火在 onStart
我没有使用 LocationManager,而是使用 LocationServices 方法来获取当前的 gps 位置和位置更新。 这是代码: public void onConnected(@Nul
我正在尝试使用 GoogleAPIClient 获取实时位置更新。虽然 GoogleAPIClient 已连接但位置对象为空,并且它提示 location.getProvider() 为空。有人可以帮
我正在 Visual Studio 2017 上使用 Xamarin 创建一个 Android 应用程序。我正在尝试使用本指南(http://www.c-sharpcorner.com/blogs/f
我想实现自己的定位服务。它将基于附近接入点的 wifi 信号强度的三角测量。 我知道确定我的位置的算法,但我不知道如何将它集成到我的代码中以便我可以简单地向我的服务添加一个 LocationListe
我只是想做一个简单的“教程”应用程序来获取我手机的位置(以了解稍后如何在其他应用程序中使用它),但我就是一无所获。 我做了什么 Android 开发人员教程: 首先,我遵循了 Android 开发人员
我不明白为什么 LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,mLocationRequest,
我正在 Android 上使用 Google Play 服务位置 API,我正在尝试弄清楚如何测试 onConnectionSuspended(int Cause) 回调,该回调是 GoogleApi
我正在开发一个 Android 库,我需要删除由使用我的库的开发人员添加的播放服务依赖项。我需要用户位置最后一个位置,所以我需要使用反射,因为位置库不会直接包含在我的库中。 但是如何通过反射从构建器创
你好 Stackoverflow 社区,我是 android 的新手,正在学习如何实现基于位置的服务。 我成功地实现了一个速度计应用程序,它可以测量当前速度、总距离和总行驶时间。 现在我想添加一个额外
我已经在其他线程中阅读了该问题的解决方案,但我似乎不明白为什么它会返回 null。我使用了谷歌开发者网站提供的相同 fragment :https://developer.android.com/tr
我有一个高优先级的项目正在开发中。 我正在尝试将地理位置插入数据库,因此我找到了在线服务,不幸的是 LocationRequest 和 LocationServices.API 未解析。 我正在使用依
我是一名优秀的程序员,十分优秀!