智能家居之智能监控小记
1.手机是如何连接摄像头
第一次连接的时候摄像头需要通过网线和路由器连接,会给摄像头分配一个ip地址,手机使用uid、密码通过ip地址进行连接,类似javaweb中的登陆访问操作
2.第一次怎么连接摄像头
首次连接摄像头需要通过网线去连接摄像头,然后手机通过wifi连接路由器,必须得到同一个网段下,然后通过手机去添加摄像头,因为我们已经有uid和密码了,所以不用添加,这样就会在手机中存储下摄像头的相关 信息,添加成功,就可以把网线拔了,下次连接的时候会从手机中将摄像头的信息拿出来,这样就可以实现使用手机在不同网段中连接摄像头了。
3.操作时阻塞现象
手机去连接摄像头的时候,是开了一个子线程通过jni调用.so文件中的方法去连接的,为了避免阻塞现象的发送,sdk中对所有的子线程都做了加锁操作,避免线程阻塞
4.摄像头内部如何实现
摄像头内部封装了一个微型liunx系统和一个微型的web服务器,我们发送指令是发送给web服务器,然后web服务器根据指令,通过一些算法去告诉摄像头执行什么操作,通过在返还给摄像头一些信息
5.移动操作中的指令参数:触控点、辅助设备
触控点:sdk中支持直接用手指在屏幕上滑动实现移动、放大等操作,所有会有一个触 控点的参数,辅助设备:摄像头支持外接麦克风和音响,所以会有一个辅助设备的参数存在,一般触控点和辅助设备我们都有0表示就可以了,代表使用系统默认的参数
Init ();
调用init放的时候会通过jni调用.so文件中的方法去初始化IOTC(物联云联机平台)模块,同时初始化av通道的最大数量(av就是音频audio和视频video,用于信号的输入、输出),为连接做准备
New camera()?
初始化uid和密码(初始化uid和密码为空字符串) uid :20位的一个摄像头的唯一标示,密码 :连接摄像头的密码
registerIOTCListener()?
设置一个监听IOTC指令的回调监听,用于监听指令的返回信息
Connect(uid)?
将我们的uid赋值给camera中uid属性,然后开启一个线程去连接设备,再开启一个线程检验设备的状态
Start()
将通道号(手机和摄像头进行连接的一个通道的编号,必须保持一致,如果不一致会导致指令无法发送成功)、用户名、密码设置到av通道中,并开启一个线程启动设备
sendIOCtrl(channel,type,data[])
将指令添加到指令执行的队列当中去等待执行,类似MessageQueue
Type:AVIOCTRLDEFs.IOTYPE_USER_IPCAM_GETSUPPORTSTREAM_REQ
获取用户摄像头支持的流信息的请求指令类型
IOTYPE:IO指令的类型
user:用户
IPCAM :ip camera
getsupportstream :获取支持的流信息
req :request请求
data[] :指令的参数
attachCamera(Camera,channel)
设置一个回调监听来获取返回的图片信息,同时开启一个渲染线程通过while循环使用Canvas videoCanvas = mSurHolder.lockCanvas();不停的进行图片渲染
startShow();
开启一个线程接收视频信息,同时在开启一个线程进行视频解码操作