简介

近距离设备间消息发布和订阅(Nearby Message),包括以下两个功能:

您将建立什么

在本篇codelab中,您将使用已经创建好的Demo Project实现对华为Nearby开放服务的API调用,Nearby Message使用场景有两类,一类是基于应用的消息发布和订阅;另一类是基于信标(Beacon)的消息发布和订阅。此Demo是基于信标(Beacon)的消息发布和订阅。

您将会学到什么

硬件要求

软件要求

若您需要正式发布集成HUAWEI Nearby Service的应用,请参见《HUAWEI HMS Core集成准备》中详细说明来完成接入准备。若您使用本CodeLab Demo验证时,直接使用Sample Code中的设置,可以忽略此步骤。

  1. 登录"华为开发者联盟"后,点击并进入右上角的"管理中心"。先点击"我的API",然后选择您要开通服务的项目,最后点击"申请新的HMS API服务",进入HMS API库的详情页面。
  2. 进入HMS API库的详情页面之后,点击"近距离通信服务",进入近距离通信服务的页面。
  3. 近距离通信服务的页面之后,点击"启用"开关,启用近距离通信服务。
  4. 点击"启用"后,需要签署同意《华为Nearby服务使用协议》和《华为APIs使用协议》才可以成功启用近距离通信服务。如图所示(该示例仅做参考,请以实际为准):
  5. 启用成功之后,在"HMS API服务 > 我的API"中可以看到当前项目下的API服务列表。

    配置数据处理位置策略

    步骤 1 - 登录AppGallery Connect网站,点击"我的项目"。
    步骤 2 - 在项目列表中找到您的项目,在项目中点击需要配置数据处理位置策略的应用。
    步骤 3 - 在"项目设置 > 数据处理位置"页面的"数据处理位置策略"区域,"近距离通信服务"后的"数据处理位置策略"选择相应的策略。

    步骤 4 - 配置完成后,点击"保存"。

    —-结束

在上一小节中,您已经做好了Demo开发前的准备工作。本小节您将尝试编写一个Demo,让您学会如何管理信标(Beacon)、配置消息以及如何使用Nearby Message接口获取信标(Beacon)消息。您只需要按照下文的每一步提示,就可以边学边做,最终构建出这个Demo。

创建服务帐号密钥

  1. 登录"华为开发者联盟"后,点击并进入右上角的"管理中心"。点击"凭证",选择相应的项目点击"创建凭证",然后选择"服务帐号密钥"。
  2. 进入创建服务帐号密钥的页面之后,依次填入名称、描述后,点击"生成公私钥",最后点击"创建并下载JSON"即可完成创建。

配置HMS Core SDK的Maven仓地址

Android Studio的代码库配置在Gradle 插件7.0以下版本、7.0版本和7.1及以上版本有所不同。请根据您当前的Gradle 插件版本,选择对应的配置过程。

7.0以下版本

7.0版本

7.1及以上版本

添加编译依赖

  1. 打开应用级的build.gradle文件。
  2. 添加Java版本配置。
    compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }
  3. 将编译依赖项添加到"dependencies"中。
    dependencies { implementation 'com.huawei.hms:nearby:{version}' }

    如图所示:

修改AndroidManifest.xml

首先,您需要修改应用的权限。在您的工程中找到app目录下的src目录,修改src目录下的AndroidManifest.xml文件,在文件中添加以下权限。
代码如下:

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

同步工程

点击"File > Sync Project with Gradle Files"同步工程。

如下图出现successful,即代表同步成功。

复制代码和资源文件

按照Demo的代码目录,在工程的Project视图下,将示例代码中的源码文件和资源文件复制到您新建工程对应的目录下。

Demo代码示例详解

以我们提供的Demo为例,我们的Demo的功能可以分为三个部分:

当您完成了上述步骤时后,就可以进行编译。
完成编译后,生成APK,安装到华为手机上,并调试、运行。

初始运行界面

单击"Merchants",进入商家界面。
单击"Consumer",进入消费者界面。

手机模拟Beacon

您可以使用该App来模拟手机A成为一个"Soft Beacon"。

  1. 打开A手机App,进入商家界面。单击"Set",为信标配置消息附件。

  2. 打开"Local Soft Beacon"的开关。通知栏提示"软beacon已开启,您的手机成为一个beacon"。

获取Beacon消息

打开B手机App,单击"Consumer"。您就可以成功获取到附件Beacon发送的消息啦。

干得好,你已经成功完成了Codelab并学到了:

您可以阅读下面链接,了解更多相关的信息。

相关文档
本codelab中所用Demo源码下载地址如下:

下载 source code

Code copied