帮酷LOGO
0 0 评论
  • 显示原文与译文双语对照的内容
文章标签:API  WRAP  换行  Google Api  
Simple wrapper library for Google APIs

  • 源代码名称:easygoogle
  • 源代码网址:http://www.github.com/googlearchive/easygoogle
  • easygoogle源代码文档
  • easygoogle源代码下载
  • Git URL:
    git://www.github.com/googlearchive/easygoogle.git
  • Git Clone代码到本地:
    git clone http://www.github.com/googlearchive/easygoogle
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/googlearchive/easygoogle
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
  • EasyGoogle

    项目状态

    status: inactive

    这里项目不再主动维护,并保留在这里作为这里工作的存档。

    EasyGoogle是为某些 Google api开发人员体验的实验改进而创建的。 自创建以来,大多数api都改进了( 还有很多类似EasyGoogle的方法)。 由于这个原因,维护这个库不再是明智的了。 感谢所有提交问题或者给予反馈的人,你的想法影响了Google的API开发。

    简介

    EasyGoogle是一个封装了 Google Play Services 基本集成的包装库。 库包装以下 api ( for ):

    安装

    通过向 build.gradle file: 添加以下依赖项来安装 EasyGoogle

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

    用法

    支持服务

    在开始之前,请访问页面选择Google服务并将它们添加到你的Android 应用。 确保启用你计划使用的所有服务,并遵循所有步骤,包括修改 build.gradle 文件以启用 google-services 插件。

    在适当的地方有 google-services.json 文件之后,就可以继续使用EasyGoogle了。

    基本

    EasyGoogle使用 Fragments 来管理 GoogleApiClient的生命周期,因此任何使用EasyGoogle的Activity 都必须扩展 FragmentActivity

    使用EasyGoogle类的所有交互都是通过 Google 类进行的,该类的实例化如下所示:

    publicclassMainActivityextendsAppCompatActivity {
     privateGoogle mGoogle;
     @OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
     mGoogle =newGoogle.Builder(this).build();
     }
    }

    当然,实例化这样的Google 对象根本不会做任何事情,你需要单独启用特性。

    登录

    要启用Google登录,请在 Google.Builder 上调用适当的方法并实现 SignIn.SignInListener 接口:

    publicclassMainActivityextendsAppCompatActivityimplementsSignIn.SignInListener {
     privateGoogle mGoogle;
     @OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
     // This is optional, pass 'null' if no ID token is required.String serverClientId = getString(R.string.default_web_client_id);
     mGoogle =newGoogle.Builder(this)
    . enableSignIn(this, serverClientId)
    . build();
     }
     @OverridepublicvoidonSignedIn(GoogleSignInAccountaccount) {
     // Sign in was successful. }
     @OverridepublicvoidonSignedOut() {
     // Sign out was successful. }
     @OverridepublicvoidonSignInFailed() {
     // Sign in failed for some reason and should not be attempted again// unless the user requests it. }
     }

    然后,使用 mGoogle.getSignIn() 中的SignIn 对象访问 SignIn#getCurrentUser()SignIn#signInSignIn#signOut 等API方法。

    云消息传递

    要启用云消息传递,你必须在应用程序中实现一个简单的Service

    首先,选择唯一的权限 NAME,并在 strings.xml 文件中创建以下字符串资源。 选择一个唯一的名称很重要:

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

    接下来,在 AndroidManifest.xml 标签内添加以下内容,确保元素的值与上面的strings.xml 文件中指定的值一样:

    <!-- This allows the app to receive GCM through EasyGoogle --> <serviceandroid:name=".MessagingService"android:enabled="true"android:exported="false"android:permission="your.unique.gcm.permission.name.here"/>

    接下来,在 application 标签之前添加以下权限到 AndroidManifest.xml 文件,用你的Android软件包名称替换 <your-package-name>:

     <permissionandroid:name="<your-package-name>.permission.C2D_MESSAGE"android:protectionLevel="signature"/>
     <uses-permissionandroid:name="<your-package-name>.permission.C2D_MESSAGE"/>

    然后实现一个名为 MessagingService的类来扩展 EasyMessageService。 下面是此类类的一个示例:

    publicclassMessagingServiceextendsEasyMessageService {
     @OverridepublicvoidonMessageReceived(Stringfrom, Bundledata) {
     // 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 =newNotificationCompat.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);
     }
     }
     @OverridepublicvoidonNewToken(Stringtoken) {
     // Send a registration message to the server with our new tokenString senderId = getString(R.string.gcm_defaultSenderId);
     sendRegistrationMessage(senderId, token);
     }
    }

    注意使用 helper 方法 forwardToListenercreateMessageIntent,这使得启动 Activity 或者创建一个通知来处理消息变得更加容易。

    forwardToListener 方法检查是否存在在前景中实现 Messaging.MessagingListener的Activity。 如果存在,它将GCM消息发送到 Activity 来处理。 要实现 Messaging.MessagingListener,在 Activity 中调用 Google.Builder 上的适当方法并实现接口:

    publicclassMainActivityextendsAppCompatActivityimplementsMessaging.MessagingListener {
     privateGoogle mGoogle;
     @OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
     mGoogle =newGoogle.Builder(this)
    . enableMessaging(this, getString(R.string.gcm_defaultSenderId))
    . build();
     }
     @OverridepublicvoidonMessageReceived(Stringfrom, Bundlemessage) {
     // GCM message received. }
    }

    然后,使用 mGoogle.getMessaging() 中的Messaging 对象访问 API methodslike Messaging#send

    应用程序邀请

    要启用应用程序邀请,请在 Google.Builder 上调用适当的方法并实现 AppInvites.AppInviteListener 接口:

    publicclassMainActivityextendsAppCompatActivityimplementsAppInvites.AppInviteListener {
     privateGoogle mGoogle;
     @OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
     mGoogle =newGoogle.Builder(this)
    . enableAppInvites(this)
    . build();
     }
     @OverridepublicvoidonInvitationReceived(StringinvitationId, StringdeepLink) {
     // Invitation recieved in the app. }
     @OverridepublicvoidonInvitationsSent(String[] ids) {
     // The user selected contacts and invitations sent successfully. }
     @OverridepublicvoidonInvitationsFailed() {
     // The user either canceled sending invitations or they failed to// send due to some configuration error. }
    }

    然后,使用 mGoogle.getAppInvites() 中的AppInvites 对象访问API方法,如 AppInvites#sendInvitation

    用于密码的 SmartLock

    要启用密码的智能锁,请在 Google.Builder 上调用适当的方法并实现 SmartLock.SmartLockListener 接口:

    publicclassMainActivityextendsAppCompatActivityimplementsSmartLock.SmartLockListener {
     privateGoogle mGoogle;
     @OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
     mGoogle =newGoogle.Builder(this)
    . enableSmartLock(this)
    . build();
     }
     @OverridepublicvoidonCredentialRetrieved(Credentialcredential) {
     // Successfully retrieved a Credential for the current device user. }
     @OverridepublicvoidonShouldShowCredentialPicker() {
     // In order to retrieve a Credential, the app must show the picker dialog// using the SmartLock#showCredentialPicker() method. }
     @OverridepublicvoidonCredentialRetrievalFailed() {
     // The user has no stored credentials, or the retrieval operation failed or// was canceled. }
    }

    然后,使用 mGoogle.getSmartLock() 中的SmartLock 对象访问 SmartLock#getCredentials()SmartLock#save() 之类的API方法。

    高级用法

    如果你想使用启用的Google服务执行某些操作,但未被EasyGoogle库正确包装,只需调用 Google#getGoogleApiClient() 即可访问 Google 对象所持有的底层 GoogleApiClient



    文章标签:API  WRAP  换行  Google Api  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语