首先一開始你為了要連到 Google Play services library所提供的Google APIS(像是Google Sign-In, Games, or Drive),你就必須要使用
GoogleApiClient,他提供了一個
Google Play services進入點和管理使用者跟Google Service的網路連線--(詳細就不多說了附上 https://developers.google.com/android/guides/api-client)
首先一開始在 onCreate()裡加入
// Create an instance of GoogleAPIClient. if (mGoogleApiClient == null) { mGoogleApiClient = new GoogleApiClient.Builder(this) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .addApi(LocationServices.API) .build(); }
這裡提供了你可以使用google api 以及 你所需要的 OAuth 2.0 scopes(實作出 API 的存取管制)
protected void onStart() { mGoogleApiClient.connect(); super.onStart(); } protected void onStop() { mGoogleApiClient.disconnect(); super.onStop(); }
上述不多說
接下來才是重頭戲
public class MainActivity extends ActionBarActivity implements ConnectionCallbacks, OnConnectionFailedListener { ... @Override public void onConnected(Bundle connectionHint) { mLastLocation = LocationServices.FusedLocationApi.getLastLocation( mGoogleApiClient); if (mLastLocation != null) { mLatitudeText.setText(String.valueOf(mLastLocation.getLatitude())); mLongitudeText.setText(String.valueOf(mLastLocation.getLongitude())); } } }
在主程式中你必須先implement
ConnectionCallback以及OnConnectionFailedListener
在onConnected裡去實作方法出來,這裡用了FusedLocationProviderApi的getLastLocation那他會回傳location,最後你就可以加在你一開啟地圖上的初始位置。
記得Manifest的權限要加
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
**貼心提醒:在android 6.0的手機記得要替自己部屬的程式加開權限,要不然你怎麼樣也抓不到自己現在的位置
https://github.com/andy086912597/googlemapdemo/tree/master/GoogleMapDirectionSimple-master
相關網站
https://developer.android.com/training/location/retrieve-current.html
沒有留言:
張貼留言