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

  

Android 伤敌一千自损八百之萤石摄像头集成(二)的更多相关文章

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

    最近忙着修改萤石摄像头C3型号开头的设备添加 本来不是很复杂的事情. , 现在我感觉我入魔了 总感觉这是个小人 螺丝口是眼睛 插入SD卡的事鼻子嘴 接信号的事手 怎么看怎么像愤怒的小人 总结,先看一下 ...

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

    说一下萤石原生播放 先上代码 private MyOrientationDetector mOrientationDetector; @Override protected void onCreate ...

  3. (转载)Android项目实战(二十八):使用Zxing实现二维码及优化实例

    Android项目实战(二十八):使用Zxing实现二维码及优化实例 作者:听着music睡 字体:[增加 减小] 类型:转载 时间:2016-11-21我要评论 这篇文章主要介绍了Android项目 ...

  4. 如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成

    阅读目录 前言 建模 实现 结语 一.前言 前面几篇已经实现了一个基本的购买+售价计算的过程,这次再让售价丰满一些,增加一个会员价的概念.会员价在现在的主流电商中,是一个不大常见的模式,其带来的问题是 ...

  5. Android RecyclerView单击、长按事件:基于OnItemTouchListener +GestureDetector标准实现(二),封装抽取成通用工具类

     Android RecyclerView单击.长按事件:基于OnItemTouchListener +GestureDetector标准实现(二),封装抽取成通用工具类 我写的附录文章2,介绍了 ...

  6. 20162317袁逸灏 第八周实验报告:实验二 Java面向对象程序设计

    20162317袁逸灏 第八周实验报告:实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 ...

  7. Spring Boot(十八):使用Spring Boot集成FastDFS

    Spring Boot(十八):使用Spring Boot集成FastDFS 环境:Spring Boot最新版本1.5.9.jdk使用1.8.tomcat8.0 功能:使用Spring Boot将文 ...

  8. Android集成二维码扫描功能

    文章转载自  https://github.com/yipianfengye/android-zxingLibrary 在具体介绍该扫描库之前我们先看一下其具体的使用方式,看看是不是几行代码就可以集成 ...

  9. Android开发教程 - 使用Data Binding(八)使用自定义Interface

    本系列目录 使用Data Binding(一)介绍 使用Data Binding(二)集成与配置 使用Data Binding(三)在Activity中的使用 使用Data Binding(四)在Fr ...

随机推荐

  1. Java实现硬币收集问题

    1 问题描述 在n*m格木板中放有一些硬币,每格的硬币数目最多为一个,在木板左上方的一个机器人需要收集尽可能多的硬币并把它们带到右下方的单元格.每一步,机器人可以从当前的位置向右移动一格或向下移动一格 ...

  2. java实现第七届蓝桥杯平方末尾

    平方末尾 能够表示为某个整数的平方的数字称为"平方数" 比如,25,64 虽然无法立即说出某个数是平方数,但经常可以断定某个数不是平方数. 因为平方数的末位只可能是:[0, 1, ...

  3. 一个Redis查询案例

    1.远程登陆进服务器 使用ssh连接至Linux服务器中 2.接入redis集群 redis-cli -h 10.1.8.12 -p 29000 3.执行查询命令 根据userid查询用户的最近在线时 ...

  4. JAVA第三次blog总结

    JAVA第三次blog总结 0.前言 这是我们在博客园上第三次写博客,也是本学期最后一次的JAVA学习大总结.现在我们的JAVA已经接近尾声了,对于编程思想和方法的改变依旧是难点,但是经过这一段时间的 ...

  5. zabbix 监控cpu 温度

    Zabbix监控Linux主机CPU温度   一.客户端 1.客户Linux主机安装Im_sensors [root@localhost ~]# yum install -y lm-sensors-y ...

  6. zabbix服务无法正常启动

    环境介绍 操作系统 centos 7.4 zabbix 3.4.7   故障现象说明 zabbix agent无法启动   web 监控不到客户端服务器   查看日志报错 提示不能打开日志,不能创建信 ...

  7. kafka能做什么?kafka集群配置 (卡夫卡 大数据)

    什么是Kafka 官网介绍: 几个概念: 详细介绍 : 操作kafka: kafka集群 消息测试 问题检测 什么是Kafka 官网介绍: ApacheKafka是一个分布式流媒体平台.这到底是什么意 ...

  8. IE6 中png背景透明的最好方法

    应用方式:(网站尾部加上如下代码) <!--[if IE 6]> <script src="js/DDPngMin.js"></script> ...

  9. Ubuntu:E: Sub-process /usr/bin/dpkg returned an error code (1)

    Ubuntu系统安装软件时报以下错误: E: Sub-process /usr/bin/dpkg returned an error code (1) 解决: mv /var/lib/dpkg/inf ...

  10. 全网最完整的Redis入门指导

    前言 本文提供全网最完整的Redis入门指导教程,下面我们从下载Redis安装包开始,一步一步的学习使用. 下载Redis 官网提供的Redis安装包是服务于Linux的,而我们需要在Window下使 ...