前言
朋友来家里做客、顾客到店里用餐…当他们想要给自己的手机链接Wi-Fi时,总免不了询问Wi-Fi名称和密码。这种问密码和给密码的过程十分麻烦,常常还会有听错或者输错密码的情况,更重要的是无意间会造成密码泄露。如何实现可以不用手动输入密码,一键登录链接Wi-Fi呢?
华为Nearby Service为您提供了“Wi-Fi分享”新特性。通过此特性,用户只需要在应用中选中待连网的设备并确定协助其连网,即可实现一键接入Wi-Fi网络。
Wi-FiShareDemo
Wi-FiShareDemo是一个已经集成Nearby Service实现Wi-Fi分享的示例应用,本节介绍如何将这个示例应用运行起来及该示例应用的关键代码。
工具准备
-
1台华为手机(分享方需要是华为手机)
-
1台安卓设备(接受方需要是安卓5.0以上且安装了HMSCore的设备,可以是手机,电视盒子等安卓设备)
-
分享方已连接Wi-Fi,接受方未连接
-
开发工具 Android Studio(3.X or later)
构建示例应用
-
在Android Studio中导入示例源代码。
-
注册成为[华为开发者]。
-
参考[Nearby Service 开发准备]在华为应用市场创建一个您的应用。注意:需要下载“agconnect-services.json”文件和参考指导生成签名证书并放置在app/目录下。
- 在Android Studio中运行该应用将其安装到测试机。
操作步骤
如您已经按上述步骤完成编译构建并安装到了手机上,则可以按如下步骤进行体验。注意:测试机A必须是华为手机且已经连接Wi-Fi,测试机B可以是其他安卓手机且未连接目标Wi-Fi。
- 在测试机B上打开Wi-FiShareDemo,点击“Connect Wi-Fi”
- 测试机A已连上Wi-Fi,打开Wi-FiShareDemo,点击Share Wi-Fi”
- 在测试机A上选择待分享的手机,确认两台手机上的验证码一致,选择“ALLOW”
- 在测试机B上点击弹出框的提示“ALLOW”,允许连接WLAN。
关键代码说明
示例应用的源代码托管在GitHub上,您可以直接查看源码。在这个示例应用中,类WifiShareHelper.java基于Nearby Service的接口做了封装,提供了
源码中仅有两个类MainActivity.java和WifiShareHelper.java,上述分享Wi-Fi过程仅用了WifiShareHelper.java中连接Wi-Fi和分享Wi-Fi的两个接口。
- 连接Wi-Fi(requestWiFiConfig)
// The device request to connect WiFi
public void requestWiFiConfig() {
Log.d(TAG, "requestWiFiConfig");
mWifiShareEngine.startWifiShare(mWifiShareCallback, WifiSharePolicy.POLICY_SET)
.addOnFailureListener(e -> Log.e(TAG, Objects.requireNonNull(e.getMessage())));
}
- 分享Wi-Fi(shareWiFiConfig)
// The device to share wifi
public void shareWiFiConfig() {
Log.d(TAG, "Start to share WiFi");
mWifiShareEngine.startWifiShare(mWifiShareCallback, WifiSharePolicy.POLICY_SHARE)
.addOnFailureListener(e -> Log.e(TAG, Objects.requireNonNull(e.getMessage())));
showListView();
setListViewListenerMode();
}
原作者:胡椒