はじめまして。
Androidの勉強を初めて10ヶ月の初心者です。
Geofenceを取得するためAndroidStudioで勉強してきたのですが、情報(本、HP、サンプルコード)が少なく自己解決が難しいため、質問させていただきました。

質問:GoogleApiClientを使用したGeofenceはどのように実装するのですか?

実現したいことは、Geofence(場所は固定)に入ったらインテントを発行する。
だけなのですが、これまでの勉強方法が本や実際に動作するサンプルコードから読み解くようにしてきたため、それらがない状態でどのようにすればいいのか?で苦労しています。
調べたところ、これまで使用されていたライブラリがなくなりGoogleApiClientを使用することがわかり、Mapの表示、現在位置の取得まではできたのですが、どのようにGeofenceを組み込むのかがわかりません。
アドバイスを頂ければ幸いです。

参考サイト
http://dev.classmethod.jp/smartphone/android/android-google-play-services-location-api-geofencing/
http://www.zionsoft.net/2014/11/google-play-services-locations-2/
その他多数。

サンプルコードを追加いたします。
各サイトを参考に作ったもので、動作は地図を表示させ、現在位置を習得、カメラを移動。
その際、ジオフェンス内ならLogに表示させることを目指したものですが、 Geofencescheck()addGeofences の入力で失敗してしまいます。
また、 onLocationChanged()Geofencescheck() を仕込んだため、毎回、位置チェックで確認するようにしたのですが、これがジオフェンスを使用する場合の正しいのか?も判断できていません。
この部分のアドバイスを頂ければ幸いです。

import android.app.PendingIntent;
import android.content.Intent;
import android.location.Location;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.widget.Toast;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.location.FusedLocationProviderApi;
import com.google.android.gms.location.Geofence;
import com.google.android.gms.location.GeofencingEvent;
import com.google.android.gms.location.LocationListener;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;

import java.util.ArrayList;


public class MainActivity extends FragmentActivity
        implements
        GoogleApiClient.ConnectionCallbacks,
        GoogleApiClient.OnConnectionFailedListener,
        LocationListener {

    private final MainActivity self = this;
    private FusedLocationProviderApi fusedLocationProviderApi = LocationServices.FusedLocationApi;
    private GoogleMap mMap = null;
    private GoogleApiClient locationClient = null;
    private static final LocationRequest REQUEST = LocationRequest.create()
            .setInterval(5000)
            .setFastestInterval(16)
            .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

    PendingIntent pendingIntent = null;
    ArrayList<Geofence> mGeofenceList = new ArrayList<>();


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

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

        if(mMap != null) {
            mMap.setMyLocationEnabled(true);
        }

        locationClient = new GoogleApiClient.Builder(this)
                .addApi(LocationServices.API)        //利用するAPIの指定
                .addConnectionCallbacks(this)        //接続完了リスナ
                .addOnConnectionFailedListener(this) //接続失敗リスナ
                .build();
        }

    @Override
    protected void onStart() {
        Log.d("mLocationClient", "接続");
        super.onStart();

        locationClient.connect();
    }

    @Override
    protected void onStop() {
        Log.d("mLocationClient", "接続解除");
        locationClient.disconnect();
        super.onStop();
    }


    @Override
    protected void onResume() {
        super.onResume();
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        Log.d("onNewIntent", String.valueOf(intent));
        GeofencingEvent event = GeofencingEvent.fromIntent(intent);
        int transitionType = event.getGeofenceTransition();
    }

    @Override
    public void onLocationChanged(Location location){
        CameraPosition cameraPos = new CameraPosition.Builder()
                .target(new LatLng(location.getLatitude(),location.getLongitude())).zoom(17.0f)
                .bearing(0).build();
        mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPos));

        //①ここにGeofenceの生成登録
        Geofencescheck();
    }

    @Override
    public void onConnectionFailed(ConnectionResult result){
        Toast.makeText(self, "onConnectionFailed", Toast.LENGTH_LONG).show();
        addGeofence();
    }

    @Override
    public void onConnected(Bundle connectionHint){
        fusedLocationProviderApi.requestLocationUpdates(locationClient, REQUEST, this);
        Toast.makeText(self, "onConnected", Toast.LENGTH_LONG).show();

    }


    @Override
    public void onConnectionSuspended(int cause){

    }


    private void addGeofence() {
        // Geofence の作成  テスト:関西国際空港
        // 緯度
        double latitude = 34.436346;
        // 経度
        double longitude = 135.244140;
        // 半径(メートル)
        float radius = 1000;

        //Geofenceの作成
        mGeofenceList.add(new Geofence.Builder()
                .setRequestId("ID")
                .setTransitionTypes(Geofence.GEOFENCE_TRANSITION_ENTER)
                .setCircularRegion(latitude, longitude, radius)
                .setExpirationDuration(Geofence.NEVER_EXPIRE)
                .build());


        // PendingIntent の生成
        Intent intent = new Intent(self, MainActivity.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    }


    private void Geofencescheck(){
        try {
            // Geofences の登録
            LocationServices.GeofencingApi.addGeofences(locationClient, mGeofenceList, pendingIntent);
            Log.d("addGeofences", "addGeofences成功");
        } catch (Exception e) {
            e.printStackTrace();
            Log.d("addGeofences", "addGeofences失敗");
        }
    }
}