Google APIs的一个简单Java封装库:easygoogle

nyyb 9年前

EasyGoogle是一个封装库简化了与Google Play Services的基础交互。这个库封装了以下APIs当前:

安装

EasyGoogle is installed by adding the following dependency to yourbuild.gradlefile:

dependencies {    compile 'pub.devrel:easygoogle:0.2.1+'  }

Enabling Services

Before you begin, visit this page to select Google services and add them to your Android app. Make sure to enable any services you plan to use and follow all of the steps, including modifying yourbuild.gradlefiles to enable thegoogle-servicesplugin.

Once you have agoogle-services.jsonfile in the proper place you can proceed to use EasyGoogle.

Basic

EasyGoogle makes use ofFragmentsto manage the lifecycle of theGoogleApiClient, so any Activity which uses EasyGoogle must extendFragmentActivity.

All interaction with EasyGoogle is through theGoogleclass, which is instantiated like this:

public class MainActivity extends AppCompatActivity {      private Google mGoogle;      @Override    protected void onCreate(Bundle savedInstanceState) {      super.onCreate(savedInstanceState);      setContentView(R.layout.activity_main);        mGoogle = new Google.Builder(this).build();    }    }

Of course, instantiating aGoogleobject like this won't do anything at all, you need to enable features individually.

Sign-In

To enable Google Sign-In, call the appropriate method onGoogle.Builderand implement theSignIn.SignInListenerinterface:

 public class MainActivity extends AppCompatActivity implements     SignIn.SignInListener {       private Google mGoogle;       @Override     protected void onCreate(Bundle savedInstanceState) {       super.onCreate(savedInstanceState);       setContentView(R.layout.activity_main);         mGoogle = new Google.Builder(this)         .enableSignIn(this)         .build();     }       @Override     public void onSignedIn(GoogleSignInAccount account) {         // Sign in was successful.     }       @Override     public void onSignedOut() {         // Sign out was successful.     }       @Override     public void onSignInFailed() {         // Sign in failed for some reason and should not be attempted again         // unless the user requests it.     }     }

Then, use theSignInobject frommGoogle.getSignIn()to access API methods likeSignIn#getCurrentUser(),SignIn#signIn, andSignIn#signOut.

Cloud Messaging

To enable Cloud Messaging, you will have to implement a simpleServicein your application.

First, pick a unique permission name and make the following string resource in yourstrings.xmlfile. It is important to pick a unique name:

<string name="gcm_permission">your.unique.gcm.permission.name.here</string>

Next, add the following to yourAndroidManifest.xmlinside theapplicationtag:

 <!-- This allows the app to receive GCM through EasyGoogle -->   <service       android:name=".MessagingService"       android:enabled="true"       android:exported="false"       android:permission="@string/gcm_permission" />

Then implement a class calledMessagingServicethat extendsEasyMessageService. Below is one example of such a class:

public class MessagingService extends EasyMessageService {      @Override    public void onMessageReceived(String from, Bundle data) {        // If there is a running Activity that implements MessageListener, it should handle        // this message.        if (!forwardToListener(from, data)) {            // There is no active MessageListener to get this, I should fire a notification with            // a PendingIntent to an activity that can handle this.            PendingIntent pendingIntent = createMessageIntent(from, data, MainActivity.class);            Notification notif = new NotificationCompat.Builder(this)                    .setContentTitle("Message from: " + from)                    .setContentText(data.getString("message"))                    .setSmallIcon(R.mipmap.ic_launcher)                    .setContentIntent(pendingIntent)                    .setAutoCancel(true)                    .build();              NotificationManager notificationManager =                    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);            notificationManager.notify(0, notif);        }    }      @Override    public void onNewToken(String token) {        // Send a registration message to the server with our new token        String senderId = getString(R.string.gcm_defaultSenderId);        sendRegistrationMessage(senderId, token);    }  }

Note the use of the helper methodsforwardToListenerandcreateMessageIntent, which make it easier for you to either launch an Activity or create a Notification to handle the message.

TheforwardToListenermethod checks to see if there is an Activity that implementsMessaging.MessagingListenerin the foreground. If there is, it sends the GCM message to the Activity to be handled. To implementMessaging.MessagingListener, call the appropriate method onGoogle.Builderin yourActivityand implement the interface:

public class MainActivity extends AppCompatActivity implements    Messaging.MessagingListener {      private Google mGoogle;      @Override    protected void onCreate(Bundle savedInstanceState) {      super.onCreate(savedInstanceState);      setContentView(R.layout.activity_main);        mGoogle = new Google.Builder(this)        .enableMessaging(this, getString(R.string.gcm_defaultSenderId))        .build();    }      @Override    public void onMessageReceived(String from, Bundle message) {        // GCM message received.    }  }

Then, use theMessagingobject frommGoogle.getMessaging()to access API methodslikeMessaging#send.

App Invites

To enable App Invites, call the appropriate method onGoogle.Builderand implement theAppInvites.AppInviteListenerinterface:

public class MainActivity extends AppCompatActivity implements    AppInvites.AppInviteListener {      private Google mGoogle;      @Override    protected void onCreate(Bundle savedInstanceState) {      super.onCreate(savedInstanceState);      setContentView(R.layout.activity_main);        mGoogle = new Google.Builder(this)        .enableAppInvites(this)        .build();    }      @Override    public void onInvitationReceived(String invitationId, String deepLink) {        // Invitation recieved in the app.    }      @Override    public void onInvitationsSent(String[] ids) {        // The user selected contacts and invitations sent successfully.    }      @Override    public void onInvitationsFailed() {        // The user either canceled sending invitations or they failed to        // send due to some configuration error.    }    }

Then, use theAppInvitesobject frommGoogle.getAppInvites()to access API methods likeAppInvites#sendInvitation.

SmartLock for Passwords

To enable Smart Lock for Passwords, call the appropriate method onGoogle.Builderand implement theSmartLock.SmartLockListenerinterface:

public class MainActivity extends AppCompatActivity implements    SmartLock.SmartLockListener {      private Google mGoogle;      @Override    protected void onCreate(Bundle savedInstanceState) {      super.onCreate(savedInstanceState);      setContentView(R.layout.activity_main);        mGoogle = new Google.Builder(this)        .enableSmartLock(this)        .build();    }      @Override    public void onCredentialRetrieved(Credential credential) {      // Successfully retrieved a Credential for the current device user.    }      @Override    public void onShouldShowCredentialPicker() {      // In order to retrieve a Credential, the app must show the picker dialog      // using the SmartLock#showCredentialPicker() method.    }      @Override    public void onCredentialRetrievalFailed() {      // The user has no stored credentials, or the retrieval operation failed or      // was canceled.    }    }

Then, use theSmartLockobject frommGoogle.getSmartLock()to access API methods likeSmartLock#getCredentials()andSmartLock#save(). 

项目主页:http://www.open-open.com/lib/view/home/1449892875254