简介

5G Modem Kit众测功能为您提供丰富的Modem参数查询能力,您可以通过提供的众测接口,获取更为全面的网络信息,为网络评估、调优提供基础的数据支撑。

您将建立什么

在这个Codelabs中,您将创建一个App,并通过5G Modem Kit完成对Modem参数的查询。

您将会学到什么

硬件要求

软件要求

需要的知识点

集成5G Modem Kit能力,需要完成以下准备工作:
  1. 创建Android Studio工程
  2. 添加配置
  3. 配置项目签名
具体操作,请按照《HUAWEI HMS Core集成准备》中详细说明来完成。

配置HMS Core SDK的Maven仓地址

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

7.0以下版本

7.0版本

7.1及以上版本

添加编译依赖

  1. 打开应用级的"build.gradle"文件。
  2. 在"dependencies"中添加如下编译依赖。
    dependencies { implementation 'com.huawei.hms:hms5gmodem-crowdtesting:{version}' }
  3. 5G Modem Kit使用了Java 8的新特性(Lambda表达式等),需要在"compileOptions"中添加Java 8的环境编译约束配置。

    android{ compileOptions{ sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }

同步工程

在完成以上的配置后,点击工具栏中的gradle同步图标,完成"build.gradle"文件的同步,将相关依赖下载到本地。

配置混淆脚本

您编译APK前需要配置混淆配置文件,避免混淆HMS Core SDK导致功能异常。

  1. 在应用级根目录下打开混淆配置文件"proguard-rules.pro",加入排除HMS Core SDK的混淆配置脚本。
    -ignorewarnings -keepattributes *Annotation* -keepattributes Exceptions -keepattributes InnerClasses -keepattributes Signature -keepattributes SourceFile,LineNumberTable -keep class com.huawei.hms5gkit.**{*;}
  2. 如果您使用了AndResGuard,需要在应用级的"build.gradle"文件中加入AndResGuard允许清单。
    "R.string.hms*", "R.string.connect_server_fail_prompt_toast", "R.string.getting_message_fail_prompt_toast", "R.string.no_available_network_prompt_toast", "R.string.third_app_*", "R.string.upsdk_*", "R.layout.hms*", "R.layout.upsdk_*", "R.drawable.upsdk*", "R.color.upsdk*", "R.dimen.upsdk*", "R.style.upsdk*", "R.string.agc*"

添加权限声明

  1. 打开项目中的"AndroidManifest.xml"文件。
  2. 添加应用所需权限。
    <!–允许程序访问网络连接–>
    <uses-permission android:name="android.permission.INTERNET" />
    <!–允许程序获取网络信息状态–>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!–允许程序获取wifi状态–>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!–允许程序通过GPS芯片接收卫星的定位信息–>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

上一小节,您已经成功集成了5G Modem Kit的SDK。
本小节您将尝试编写一个Demo,学会如何使用5G Modem Kit的SDK接口。您只需要按照下文的每一步提示,就可以边学边做,一起构建出这个Demo。

查询Modem参数

  1. 获取5G Modem Kit查询实例对象。
    private IQueryModem mQueryModem = QueryModemController.getInstance();
  2. 使用实例对象,注册5G Modem Kit的SDK回调接口绑定服务。
    // 注册5G Modem Kit回调函数,其中IResProcess为查询指标信息回调接口,IConnectProcess为服务连接信息回调接口 public boolean registerCallback(Context context) { return mQueryModem.registerCallback(context, mResProcess, mConnectProcess); } // IResProcess为查询指标信息回调接口 private IResProcess mResProcess = response -> { if (response != null && response.getCode() == 0) { // key为请求参数 String key = response.getQueryParameters(); // data为该请求响应的值 String data = response.getValue(); String content = ""; if (data != null) { content += key + " request result: " + data; } else { content += key + " request result is null"; } Log.i(TAG, content); } else { // 当响应为空,或者错误码不为0时,说明当前请求参数以及请求value无效 if (response != null) { String content = "error code: " + response.getCode() + ",\t" + response.getMsg(); Log.e(TAG, content); } else { Log.e(TAG, "response is null"); } } }; // IConnectProcess为服务连接信息回调接口 private IConnectProcess mConnectProcess = response -> { if (response == null) { Log.e(TAG, "ConnectProcess callback response data is null"); return; } String content; // 当错误码不为0时,表示存在连接异常,异常信息查看msg if (response.getCode() != 0) { content = "connect error code: " + response.getCode() + ", error msg: " + response.getMsg(); Log.e(TAG, content); } else { content = "connect code: " + response.getCode() + ", msg: " + response.getMsg(); Log.i(TAG, content); } };
  3. 注册成功之后,利用实例对象对Modem参数进行查询。查询指标请参见Constant-values
    // 查看注册状态 // 如果没有注册成功,或者和底层服务连接断开,指标查询会直接返回false public boolean getConnectStatus() { return mQueryModem.getAidlConnectStatus(); } // 参数查询 public boolean queryModem(String requestName) { return mQueryModem.queryModem(requestName); }
  4. (可选)当不需要使用5G Modem Kit的SDK提供的查询Modem参数信息能力时,使用实例对象进行注销。
    // 注销回调,断开和底层服务的连接 public void unRegisterCallback() { mQueryModem.unRegisterCallback(); }

编译,加载,调试

当您完成上述业务代码的补全后,就可以进行编译。完成编译后,生成APK,安装到测试手机上运行。

干得好,您已经完成Codelab并学习到了:

如果需要了解更多5G Modem Kit相关的信息,请关注官方网站。开发过程中遇到问题,请参见FAQ

您可以点击阅读链接,了解更多相关信息:API参考示例代码
您也可以点击下方按钮下载源码:

源码下载

Code copied