所以我有这个代码:
- package com.entu.bocterapp;
- import android.content.Context;
- import android.location.Location;
- import android.location.LocationListener;
- import android.os.Bundle;
- import android.widget.Toast;
- import com.google.android.gms.common.ConnectionResult;
- import com.google.android.gms.common.GooglePlayServicesUtil;
- import com.google.android.gms.common.api.GoogleApiClient;
- import com.google.android.gms.location.LocationRequest;
- import com.google.android.gms.location.LocationServices;
- public class LocationManager implements GoogleApiClient.ConnectionCallbacks,GoogleApiClient.OnConnectionFailedListener {
- private Context mContext;
- private GoogleApiClient mGoogleApiClient;
- private Location mLastLocation;
- private LocationRequest mLocationRequest;
- public LocationManager(Context context) {
- mContext = context;
- //
- if (checkIfGooglePlayServicesAreAvailable()) {
- //Get Access to the google service api
- buildGoogleApiClient();
- mGoogleApiClient.connect();
- } else {
- //Use Android Location Services
- //TODO:
- }
- }
- public Location getCoarseLocation() {
- if (mLastLocation != null) {
- return mLastLocation;
- } else return null;
- }
- private synchronized void buildGoogleApiClient() {
- mGoogleApiClient = new GoogleApiClient.Builder(mContext)
- .addConnectionCallbacks(this)
- .addOnConnectionFailedListener(this)
- .addApi(LocationServices.API)
- .build();
- }
- private boolean checkIfGooglePlayServicesAreAvailable() {
- int errorCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(mContext);
- if (errorCode != ConnectionResult.SUCCESS) {
- GooglePlayServicesUtil.getErrorDialog(errorCode,(RecentSightings) mContext,0).show();
- return false;
- }
- return true;
- }
- @Override
- public void onConnected(Bundle bundle) {
- Location location = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
- if (location != null) {
- mLastLocation = location;
- Toast.makeText(mContext,location.getLongitude() + "," + location.getLatitude() + " : " + location.getAccuracy(),Toast.LENGTH_LONG).show();
- }
- }
- @Override
- public void onConnectionSuspended(int i) {
- Toast.makeText(mContext,"suspended",Toast.LENGTH_LONG).show();
- }
- @Override
- public void onConnectionFailed(ConnectionResult connectionResult) {
- }
- }
我想在这个类中获取位置,但onConnected()永远不会被调用(我等了1-2分钟).我使用调试器,它说谷歌播放服务可用.
有谁知道我做错了什么?我被困在这里几个小时,阅读一切,无法让它工作.
干杯!
解决方法
你必须打电话
- mGoogleApiClient.connect();