zoukankan      html  css  js  c++  java
  • 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 伤敌一千自损八百之萤石摄像头集成(三)

      

  • 相关阅读:
    数据库系统原理
    Java并发编程详解读书笔记(一)
    Java基础之String
    Java基础之数据类型
    winform BackgroundWorker控件的用法
    汉子转拼音
    model验证(验证登录、注册...)
    Ajax.BeginForm 异步搜索
    Ajax.ActionLink 辅助方法实现局部刷新
    js 随笔
  • 原文地址:https://www.cnblogs.com/leshen/p/12627259.html
Copyright © 2011-2022 走看看