2016-05-19 44 views
0

我是新的android和我想获取我当前位置的经度和纬度,为此我使用'com.google.android.gms:play-services: 8.4.0',我得到这个错误
java.lang.IllegalArgumentException:GoogleApiClient参数是必需的。 和我提到了原先的stckoverflow的答案,但它因此未帮助me.Please帮助我,在此先感谢无法取得当前纬度和经度的android

,这里是Mapsactivity.java

public class MapsActivity extends FragmentActivity{ 

    private GoogleMap mMap; 
AppLocationService appLocationService; 
GoogleApiClient mGoogleApiClient; 
private Location mLastLocation; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_maps); 
    setUpMapIfNeeded(); 
} 

    private void setUpMapIfNeeded() { 
    if (mMap == null) { 

     mMap = ((SupportMapFragment) 
      getSupportFragmentManager().findFragmentById(R.id.map)) 
       .getMap(); 

     if (mMap != null) { 

      displayLocation(); 
     } 
    } 
} 
private void displayLocation() { 

    mLastLocation = LocationServices.FusedLocationApi 
      .getLastLocation(mGoogleApiClient); 

    if (mLastLocation != null) { 
     double latitude = mLastLocation.getLatitude(); 
     double longitude = mLastLocation.getLongitude(); 

     Log.d("result", latitude + ", " + longitude); 

    } else { 

     Log.d("result2","(Couldn't get the location. Make sure location is 
    enabled on the device)"); 
    } 
} 
} 

的代码这里是我的清单文件的代码

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.malli.myapplication" > 

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission 
android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" 
/> 

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <meta-data 
     android:name="com.google.android.gms.version" 
     android:value="@integer/google_play_services_version" /> 
    <meta-data 
     android:name="com.google.android.maps.v2.API_KEY" 
     android:value="@string/google_maps_key" /> 

    <activity 
     android:name=".MapsActivity" 
     android:label="@string/title_activity_maps" > 
     <meta-data 
      android:name="com.google.android.gms.version" 
      android:value="@integer/google_play_services_version"/> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

+0

不要张贴整个错误日志的样本。 –

+0

您可能因为'mGoogleApiClient'未初始化而意外收到错误 - 这意味着您将''.getLastLocation(mGoogleApiClient)''调用了'GoogleApiClient'实例作为参数。 – ishmaelMakitla

+0

@ishmaelMakitla初始化后,我无法看到我的logcat中的经度或纬度 – user3923278

回答

0

你尚未初始化mGoogleApiClient变量。请先初始化它。

mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .addApi(LocationServices.API).build(); 

mLastLocation = LocationServices.FusedLocationApi 
      .getLastLocation(mGoogleApiClient); 

注:这只是初始化GoogleApiClient

+0

添加上面的代码段后,它解决了这个错误,但在我的logcat中,我无法看到经度和纬度,我得到这些错误在我的控制台 – user3923278

+0

** E/CardSyncManagerImpl:onConnectionFailed:ConnectionResult {statusCode = API_UNAVAILABLE,resolution = null,message = null} ** – user3923278

+0

** I/Finsky:[1] com.google.android.finsky.cla(270) :result = false type = 4 ** – user3923278