本章主要是结合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 伤敌一千自损八百之萤石摄像头集成(三)