萤石配网SDK使用说明

版本历史

修改时间 修改说明
2019 年 10 月 9日 完成首版文档

目录结构

第1部分----------集成SDK
第2部分----------配网流程说明
第3部分----------使用示例
第4部分----------参考资料

术语说明

术语 术语说明
配网 为支持无线功能的萤石设备配置wifi,使萤石能够使用指定wifi上网

1 集成SDK

1.1 添加SDK所需权限

(十分重要!!!使用 sdk 前请添加以下权限到 AndroidManifest.xml 中,否则配网必定失败)。

    <!-- 以下是萤石配网SDK所需权限 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <!-- 以上是萤石配网SDK所需权限 -->

1.2 通过Jcenter获取SDK

 implementation 'com.ezviz.sdk:configwifi:6.2.0'

上述版本可能不是最新,点击查看Jcenter仓库中的最新版本

1.3 在工程主 module 的 build.gradle 文件中增加如下配置

defaultConfig {
    ...
    ndk {
        // SDK目前支持以下两种架构
        abiFilters "armeabi-v7a", "arm64-v8a"
  }
}
sourceSets {
    main {
        jniLibs.srcDirs = ['libs']
    }
}

当你正确完成以上三个步骤后,您就已经成功集成SDK,接下来可以开始使用SDK。

2 配网流程说明

在您开始进行调用配网接口之前,或者当您在调用配网接口过程中遇到疑问时,您可以通过以下流程图大致了解SDK的工作流程,以便您更好的了解和使用配网SDK。

config wifi flow chart

3 使用示例

如果您之前接触过萤石设备,您可能已经了解到支持无线功能的萤石设备支持多种配网方式。对于支持无线功能的某个型号的萤石设备虽然支持一种或者多种配网方式,但是通常情况下至少会有一种默认的配网方式。而默认的配网方式是我们通过SDK成功为设备配网的关键,我们只有通过调用设备默认的配网方式对应的配网接口,我们才有可能成功为设备配网。
目前萤石常用的配网方式有AP配网、SmartConfig配网、声波配网等多种方式,当您从萤石设备的提供方确认好某个型号的萤石设备的默认的配网方式,并且将设备重置到配网状态后,您就可以开始调用配网SDK为设备配网。以下是不同的配网方式对应的配网示例代码,您可以直接复用相关示例代码,并按照示例代码的提示加入您自己的业务逻辑

3.1 AP配网

关键接口

    /**
     * 启动AP配网
     * @param app 当前app的application
     * @param param 配网参数
     * @param callback 配网结果回调
     */
    void startAPConfig(Application app, final ApConfigParam param, final EZConfigWifiCallback callback)
    /**
     * 停止AP配网
     */
    void stopAPConfig()

示例代码

        // 开启日志
        EZWiFiConfigManager.showLog(true);

        // step1.准备配网参数
        ApConfigParam param = new ApConfigParam();
        param.routerWifiSsid /*路由器wifi名称*/= configParam.getStringExtra(IntentConstants.ROUTER_WIFI_SSID);
        param.routerWifiPwd /*路由器wifi密码*/= configParam.getStringExtra(IntentConstants.ROUTER_WIFI_PASSWORD);
        param.deviceSerial /*设备序列号*/= configParam.getStringExtra(IntentConstants.DEVICE_SERIAL);
        param.deviceVerifyCode /*设备验证码*/= configParam.getStringExtra(IntentConstants.DEVICE_VERIFY_CODE);
        param.deviceHotspotSsid /*设备热点名称*/= configParam.getStringExtra(IntentConstants.DEVICE_HOTSPOT_SSID);
        param.deviceHotspotPwd /*设备热点密码*/= configParam.getStringExtra(IntentConstants.DEVICE_HOTSPOT_PWD);
        param.autoConnect /*是否自动连接到设备热点*/= true;

        // step2.开始配网
        EZWiFiConfigManager.startAPConfig(app, param, new EZConfigWifiCallback(){
            @Override
            public void onInfo(int code, String message) {
                super.onInfo(code, message);

                // step3.结束配网
                if (code == EZConfigWifiInfoEnum.CONNECTING_SENT_CONFIGURATION_TO_DEVICE.code){
                    // todo 提示用户配网成功

                    // 配网成功后,需要停止配网
                    EZWiFiConfigManager.stopAPConfig();
                }
            }
            @Override
            public void onError(int code, String description) {
                super.onError(code, description);

                // step3.结束配网
                if (code == EZConfigWifiErrorEnum.CONFIG_TIMEOUT.code){
                    // todo 提示用户配网超时
                    // 配网失败后,需要停止配网
                    EZWiFiConfigManager.stopAPConfig();
                }else if(code == EZConfigWifiErrorEnum.MAY_LACK_LOCATION_PERMISSION.code){
                    // todo 提示用户授予app定位权限,并打开定位开关
                }else if (code == EZConfigWifiErrorEnum.WRONG_DEVICE_VERIFY_CODE.code){
                    // todo 提示用户验证码输入错误
                }
            }
        });

3.2 SmartConfig配网

关键接口

    /**
     * 启动SmartConfig配网
     * @param app 当前app的application
     * @param param 配网参数
     * @param callback 配网结果回调
     */
    void startSmartConfig(Application app, final SmartConfigParam param, final EZConfigWifiCallback callback)
    /**
     * 停止SmartConfig配网
     */
    void stopSmartConfig()

示例代码

        // 开启日志
        EZWiFiConfigManager.showLog(true);

        // step1.准备配网参数
        SmartConfigParam param = new SmartConfigParam();
        param.routerWifiSsid /*路由器wifi名称*/= configParam.getStringExtra(IntentConstants.ROUTER_WIFI_SSID);
        param.routerWifiPwd /*路由器wifi密码*/= configParam.getStringExtra(IntentConstants.ROUTER_WIFI_PASSWORD);
        param.deviceSerial /*设备序列号*/= configParam.getStringExtra(IntentConstants.DEVICE_SERIAL);

        // step2.开始配网
        EZWiFiConfigManager.startSmartConfig(app, param, new EZConfigWifiCallback() {
            @Override
            public void onInfo(int code, String message) {
                super.onInfo(code, message);

                // step3.结束配网
                if (EZConfigWifiInfoEnum.CONNECTED_TO_WIFI.code == code){
                    // todo 提示用户配网成功

                    // 配网成功后,需要停止配网
                    EZWiFiConfigManager.stopSmartConfig();
                }
            }

            @Override
            public void onError(int code, String description) {
                super.onError(code, description);

                // step3.结束配网
                if (code == EZConfigWifiErrorEnum.CONFIG_TIMEOUT.code){
                    // todo 提示用户配网超时

                    // 配网失败后,需要停止配网
                    EZWiFiConfigManager.stopSmartConfig();
                }else if (code == EZConfigWifiErrorEnum.CAN_NOT_SEND_CONFIGURATION_TO_DEVICE.code){
                    // todo 提示用户使用SmartConfig配网时,手机必须连接到wifi
                }
            }
        });

3.3 声波配网

关键接口

    /**
     * 启动声波配网
     * @param app 当前app的application
     * @param param 配网参数
     * @param callback 配网结果回调
     */
    void startSoundWaveConfig(Application app, final SoundWaveConfigParam param, final EZConfigWifiCallback callback)
    /**
     * 停止声波配网
     */
   void stopSoundWaveConfig()

示例代码

        // 开启日志
        EZWiFiConfigManager.showLog(true);

        // 准备配网参数
        SoundWaveConfigParam param = new SoundWaveConfigParam();
        param.routerWifiSsid /*路由器wifi名称*/= configParam.getStringExtra(IntentConstants.ROUTER_WIFI_SSID);
        param.routerWifiPwd /*路由器wifi密码*/= configParam.getStringExtra(IntentConstants.ROUTER_WIFI_PASSWORD);
        param.deviceSerial /*设备序列号*/= configParam.getStringExtra(IntentConstants.DEVICE_SERIAL);
        // 开始配网
        EZWiFiConfigManager.startSoundWaveConfig(app, param, new EZConfigWifiCallback() {
            @Override
            public void onInfo(int code, String message) {
                super.onInfo(code, message);
                // step3.结束配网
                if (EZConfigWifiInfoEnum.CONNECTED_TO_WIFI.code == code){
                    // todo 提示用户配网成功

                    // 配网成功后,需要停止配网
                    EZWiFiConfigManager.stopSoundWaveConfig();
                }
            }

            @Override
            public void onError(int code, String description) {
                super.onError(code, description);
                // step3.结束配网
                if (code == EZConfigWifiErrorEnum.CONFIG_TIMEOUT.code){
                    // todo 提示用户配网超时

                    // 配网失败后,需要停止配网
                    EZWiFiConfigManager.stopSoundWaveConfig();
                }else if (code == EZConfigWifiErrorEnum.PHONE_MEDIA_VALUE_NOT_MAX.code){
                    // todo 提示用户使用声波配网时将音量调到最大,用以提高配网成功率

                }
            }
        }

4 参考资料

若文档有未尽之处,请参考以下资料。 1.萤石配网SDK demo,点击跳转到github下载

results matching ""

    No results matching ""