Android 伤敌一千自损八百之萤石摄像头集成(二)

本章主要是结合webview展示直播

app负责配网展示设备

加载webview播放

不介绍别的只说集成,至于APP_KEY、accessToken怎么获取的不予解释,官网都有

获取WiFi名称

这里有个隐藏bug,如果APP没有获取定位权限就获取不到WiFi名称,好厉害,不知道定位权限和获取WiFi名称有啥关系,有知道的大神求告知

private String getWIFISSID(Activity activity){
        String ssid = "unknown id";
        WifiManager wifiManager = (WifiManager) activity.getApplicationContext().getSystemService(WIFI_SERVICE);
        WifiInfo wifiInfo = wifiManager.getConnectionInfo();
        Log.d("wifiInfo", wifiInfo.toString());
        Log.d("SSID",wifiInfo.getSSID());
        return wifiInfo.getSSID().replaceAll("\"","");
    }  

点击配置网络按钮

private void addWifi() {

        final Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                Log.d("aaaaaaaa",deviceNumber+"    "+deviceType);
                result = EZOpenSDK.getInstance().probeDeviceInfo(deviceNumber, deviceType);

                if (result.getBaseException() == null) {
                    //已经配网成功添加平台
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            addVideoDeviceToYs();
                        }
                    });
                } else {
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            int code = result.getBaseException().getErrorCode();
                            setWifiToDevice(code);
                        }
                    });
                }

            }
        });

        thread.start();
    }

  

//将摄像头添加到萤石服务器
    private void addVideoDeviceToYs() {
        EZOpenSDK.getInstance().stopConfigWiFi();
        HttpRequest.addVideoDeviceToYs(deviceNumber, deviceAuthCode, this);
        showWaitDialog("设备平台注册中...", false);
    }

//返回处理
成功进入下一步
失败提示
//为设备配网
private void setWifiToDevice(final int code) {
    try {
        switch (code) {
            case 120023://  设备不在线,未被用户添加 (这里需要网络配置)
            case 120002:// 设备不存在,未被用户添加 (这里需要网络配置)
//                startTimer();
//                setWifForOne(code);
//                break;
            case 120029://  设备不在线,已经被自己添加 (这里需要网络配置)
//                startTimer();
//                setWifForOne(code);
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        if (result.getEZProbeDeviceInfo() == null){
                            dismissWaitDialog();
                            // 未查询到设备信息,不确定设备支持的配网能力,需要用户根据指示灯判断
                            //若设备指示灯红蓝闪烁,请选择smartconfig配网
                            //若设备指示灯蓝色闪烁,请选择设备热点配网
                        }else{
                            // 查询到设备信息,根据能力级选择配网方式
                            try {
                                if (result.getEZProbeDeviceInfo().getSupportAP() == 2) {
                                    dismissWaitDialog();
                                    //选择设备热单配网
                                    showWaitDialog("设备配网中", false);

                                    EZOpenSDK.getInstance().startAPConfigWifiWithSsid(wifiSsid, etWifiPd.getText().toString().trim(), deviceNumber, deviceAuthCode, new APWifiConfig.APConfigCallback() {
                                        @Override
                                        public void onSuccess() {
                                            dismissWaitDialog();

                                            EZOpenSDK.getInstance().stopAPConfigWifiWithSsid();
                                            deviceCode = code;
                                            handler.sendEmptyMessage(1);


                                        }

                                        @Override
                                        public void OnError(int i) {
                                            dismissWaitDialog();
                                            EZOpenSDK.getInstance().stopAPConfigWifiWithSsid();
    //                                        stopTimer();
                                            switch (i) {
                                                case 15:
                                                    // TODO: 2018/7/24 超时
                                                    ToastUtils.showToast("超时");
                                                    break;
                                                case 1:
                                                    // TODO: 2018/7/24 参数错误
                                                    ToastUtils.showToast("参数错误");
                                                    break;
                                                case 2:
                                                    // TODO: 2018/7/24 设备ap热点密码错误
                                                    ToastUtils.showToast("设备ap热点密码错误");
                                                    break;
                                                case 3:
                                                    // TODO: 2018/7/24  连接ap热点异常
                                                    ToastUtils.showToast("连接ap热点异常");
                                                    break;
                                                case 4:
                                                    // TODO: 2018/7/24 搜索WiFi热点错误
                                                    ToastUtils.showToast("搜索WiFi热点错误");
                                                    break;
                                                default:
                                                    // TODO: 2018/7/24 未知错误
                                                    ToastUtils.showToast("未知错误");
                                                    break;
                                            }
                                        }
                                    });
                                }
                                if (result.getEZProbeDeviceInfo().getSupportWifi() == 3) {
                                    //选择smartconfig配网
                                }
                                if (result.getEZProbeDeviceInfo().getSupportSoundWave() == 1) {
                                    //选择声波配网
                                    startTimer();
                                    setWifForOne(code);
                                }
                            } catch (Exception e) {
                                e.printStackTrace();
                                ToastUtils.showToast("未知错误");
                                Log.d("aaaa",""+e.toString());
                            }
                        }
                    }
                });
                break;
            case 120020:// 设备在线,已经被自己添加 (给出提示)
                ToastUtils.showToast("设备在线,已经被自己添加 ");
                break;
            case 120022://  设备在线,已经被别的用户添加 (给出提示)
                ToastUtils.showToast("设备在线,已经被别的用户添加 ");
                break;
            case 120024:// 设备不在线,已经被别的用户添加 (给出提示)
                ToastUtils.showToast("设备不在线,已经被别的用户添加 ");
                break;
            default:    //请求异常
                ToastUtils.showToast("设备异常,请联系客服");
                break;

        }
    } catch (Exception e) {
        e.printStackTrace();
        Log.d("aaaa",""+e.toString());
    }
}
private Handler handler=new Handler(){
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        if (msg.what==1){
            new AlertDialog.Builder(VideoDevicePairingActivity.this).setTitle("添加到视频平台")
                    .setMessage("请将设备添加到视频平台").setNegativeButton("确定", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    if (deviceCode == 120029) {
                        goToAddVideoDevice();
                    } else {
                        addVideoDeviceToYs();
                    }
                }
            }).setCancelable(false).create().show();
        }
    }
};
//开启定时器
private void startTimer() {
    stopTimer();
    myTimer = new Timer();
    myTimerTask = new TimerTask() {
        @Override
        public void run() {
            /*
             * 停止Wifi配置
             */
            EZOpenSDK.getInstance().stopConfigWiFi();
            if (waitDialog != null) {
                dismissWaitDialog();
            }
        }
    };

    myTimer.schedule(myTimerTask, 30000);
}

//关闭定时器
private void stopTimer() {
    if (waitDialog != null) {
        dismissWaitDialog();
    }
    if (myTimer != null) {
        myTimer.cancel();
        myTimer = null;
    }

    if (myTimerTask != null) {
        myTimerTask.cancel();
        myTimerTask = null;
    }
}
private void setWifForOne(final int code) {

    showWaitDialog("设备配网中", false);
    String password = etWifiPd.getText().toString().trim();
    if (TextUtils.isEmpty(password)) {
        ToastUtils.showToast("请输入wifi密码");
    } else {
        /*
         * 开始WiFi配置
         * @since 4.8.3
         * @param context  应用 activity context
         * @param deviceSerial   配置设备序列号
         * @param ssid  连接WiFi SSID
         * @param password  连接  WiFi 密码
         * @param mode      配网的方式,EZWiFiConfigMode中列举的模式进行任意组合(EZWiFiConfigMode.EZWiFiConfigSmart:普通配网;EZWiFiConfigMode.EZWiFiConfigWave:声波配网),例
         *                             如:EZWiFiConfigMode.EZWiFiConfigSmart|EZWiFiConfigMode.EZWiFiConfigWave
         * @param back     配置回调
         */
        EZOpenSDK.getInstance().startConfigWifi(this, deviceNumber, wifiSsid, password,
                EZConstants.EZWiFiConfigMode.EZWiFiConfigSmart | EZConstants.EZWiFiConfigMode.EZWiFiConfigWave,
                new EZOpenSDKListener.EZStartConfigWifiCallback() {
                    @Override
                    public void onStartConfigWifiCallback(final String s, final EZConstants.EZWifiConfigStatus ezWifiConfigStatus) {
                        VideoDevicePairingActivity.this.runOnUiThread(new Runnable() {
                            @Override
                            public void run() {

                                if (ezWifiConfigStatus == EZConstants.EZWifiConfigStatus.DEVICE_WIFI_CONNECTED) {
                                    //                                        EZOpenSDK.getInstance().stopConfigWiFi();
                                    //设备wifi连接成功  停止定时器  停止噪音
                                    //                                        EZOpenSDK.getInstance().stopConfigWiFi();
                                    //设备注册到平台成功,可以调用添加设备接口添加设备
                                    stopTimer();
                                } else if (ezWifiConfigStatus == EZConstants.EZWifiConfigStatus.DEVICE_PLATFORM_REGISTED) {
                                    EZOpenSDK.getInstance().stopConfigWiFi();

                                    new AlertDialog.Builder(VideoDevicePairingActivity.this).setTitle("添加到视频平台")
                                            .setMessage("请将设备添加到视频平台").setNegativeButton("确定", new DialogInterface.OnClickListener() {
                                        @Override
                                        public void onClick(DialogInterface dialog, int which) {
                                            if (code == 120029) {
                                                goToAddVideoDevice();
                                            } else {
                                                addVideoDeviceToYs();
                                            }
                                        }
                                    }).setCancelable(false).create().show();

                                }
                            }
                        });
                    }
                });
    }

}

  

  
好像就是这么多,如果没成功再联系,检查这没有遗漏代码
至于添加成功之后,就是H5了
https://www.cnblogs.com/leshen/p/12627445.html Android 伤敌一千自损八百之萤石摄像头集成(三)

  

原文地址:https://www.cnblogs.com/leshen/p/12627259.html