可开发除配网外所有Yoosee已开发的功能,配网在下面说明中单独列出,对于Demo中的内容,会根据实际情况增加;
以下功能已经完成
- 登陆(Login)
- 监控(Moniter)
- 回放(Playback)
- 注册(registered)
- 获取报警图片(Get the alarm picture)
- 发现局域网设备
- 局域网设备体检
- 传感器(Sensor)
- 报警邮箱(Alarm email)
- 设置
- 报警设置
- 【优化】使用Rxjava2.x替代Rxjava1.x版本
- 【新增】P2PConnect增加app版本参数
- 【优化】服务器返回设备信息增加布撤防状态标记
- 【新增】新增Session2,服务于异地登录功能
- 【修复】本地录像异常
- 【修复】ThirdPartLogin接口的返回的JavaBean与服务器命名不同,导致无法JSON解析,【注意】引用http里面的Result对象
- 【修复】getAccountByPhoneNO与ThirdPartLogin接口的返回类型报错(can't cast Class)
- 【新增】getAccountByPhoneNO接口返回实体类getAccountByPhoneNoResult,参见HttpSend
- 【修复】获取普通设置项的数据异常
- 【修复】部分Android 7.0设备在全景摄像头监控完成后退出崩溃
- 【新增】门铃离线消息与消息接收结束接口
- 【BUG】语音对讲无声音传输(不要使用这个版本)
不提供Eclipse的集成方式,如有需要可自行寻找解决办法(参考,未经实践,如有成功的小伙伴,可发总结交流文章给作者)
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
......
compile 'com.p2p.core:p2p-core:0.4.4'
}
在自定义Application中初始化
public class MyApp extends Application {
public static MyApp app;
//这三个参数需要服务器分配(ID token与版本(在同一版本)是固定的,可硬编码在代码中。版本迭代时需要修改版本)
//连接时需要传入,下面的数据仅供测试使用
//three parems come frome Gwell , the value below just test
public final static String APPID="1e9a2c3ead108413e8218a639c540e44";
public final static String APPToken="7db7b2bff80a025a3dad546a4d5a6c3ee545568d4e0ce9609c0585c71c287d08";
//前两位是客户APP唯一编号(00.00 由技威分配),后两位是APP版本号(客户自定义),此参数不可省略
public final static String APPVersion="00.00.00.01";
@Override
public void onCreate() {
super.onCreate();
app = this;
initP2P(app);
}
private void initP2P(MyApp app) {
//ID、TOKEN与APPVersion需要在服务器申请登记
P2PSpecial.getInstance().init(app,APPID,APPToken,APPVersion);
}
}
-
p2p初始化的代码MainService可不做修改,此Demo仅做示例
-
P2PListener与SettingListener
-
两个监听分别实现的是P2P-Core的
IP2P
与ISetting
public class P2PListener implements IP2P {
...
...
@Override
public void vCalling(boolean isOutCall, String threeNumber, int type) {
//手机被动呼叫
}
@Override
public void vReject(String deviceId, int reason_code) {
//监控挂断时回调
Intent intent = new Intent();
intent.setAction(MonitoerActivity.P2P_REJECT);
intent.putExtra("reason_code", reason_code);
MyApp.app.sendBroadcast(intent);
}
...
...
}
public class SettingListener implements ISetting {
//所有的ACK回调都会有四个状态result:9996(权限不足(访客))9997(指令发送成功)9998(指令发送失败)9999(密码错误)
//一般ACK_xxx回调 会有一个 xxx 回调对应 (eg:checkPasswold除外,这个指令只能通过指令是否发送成功来判断密码)
//ACK_xxx 9997是指令发送成功,但不保证设备执行成功(小概率)
//xxx这个回调才是设备真实的执行结果会调
...
...
@Override
public void ACK_vRetSetDeviceTime(int msgId, int result) {
//设置设备时间命令的ACK回调
}
@Override
public void ACK_vRetGetDeviceTime(int msgId, int result) {
//获取设备时间命令的ACK回调
}
...
...
}
- 代码顺序:init-->login-->connect-->...P2PHandler里面的其他指令...-->Disconnect
- MyAPP里的三个参数
APPID
,APPTOKEN
,APPVersion
需要提供包名分配 APPVersion
建议保证每个新版本都不相同,但前两位保持一致,这样易于排查问题与将来新功能的加入,例如:00.23.00.01
-->00.23.00.02
-->00.23.00.03
-->...- 设备端的交互接口参见硬件接口说明
- P2PView外层必须被
RelativeLayout
包裹,且不要在子类中声明(父类已存在) - 监控页挂断之后必须finish,其他页面想返回必须重新startActivity
- 删除原来APP层的Mediaplayer.so、SDL.so与mp4v2.so(如果有的话)删除(P2P-Core已包含)
- NDK 暂时仅支持ARM 32位,更多支持还在开发中,大部分手机已够用
- Web接口(与服务器交互)方法都在HttpSend中。
- P2P功能(与设备交互)方法都在P2PHandler中,使用前确保设备在线,并且P2P初始化正常,后续会加强代码注释
- 代码与接口有少许修改,如果之前已经在使用Module的,改用Gradle之后,有其他使用上的问题,可询问技术支持
- P2P消息简易流程图如下
- 监控结束时会保存一张图片到SD卡,路径:~/screenshot/tempHead/{$UserID}/{$deviceid}.jpg
- 手动截图路径:~/screenshot/{$deviceid}_{$time}.jpg
- 对库有任何疑问可在issues
- 也可询问人工技术支持
配网是是添加摄像头的前期必要步骤,但已联网的设备不需此步骤。配网代码流程相似,基本都是将WiFi信息通过某种方式发给设备,设备连接成功之后通过UDP告知APP自身信息
- 智能联机示例SmartLinke
- 声波配网示例soundwave
- AP配网说明AP
- 1.由于服务器使用了新的反馈码,旧代码中的定义基本废除 所以,每一份与webAPI通信的代码都需要经历一次改造
- 新反馈码是16进制字符串,之前代码中大量存在Integer.paser(error_code)的情况 使用新webAPI之后这部分会崩溃
- 新反馈码与旧码不是一一对应的,所以旧版中发现新版没有对应时可删除对应反馈码的逻辑处理代码
- 新反馈码含义参见下图,代码中可通过
HttpErrorCode
引用 - 新反馈码查询
C/C++
- x264(未知)
- SDL(未知)
- faac(1.18 beta)
- mp4v2(2.0.0)
- FFmpeg(3.2.4)
- avcodec
- avformat
- swscale
- swresample
- avutil
- 【修复】局域网呼叫失败
- 【新增】微信登陆接口,参见HttpSend的WeChatLogin
- 【修复】获取报警图片大概率获取失败
- 【新增】支持targetSdkVersion 23+
- 【修复】新版WebAPI下服务器返回2个新错误码标记更换服务器地址
- 【修复】解决依然耗电(占用CPU)的情况(10%--->5%以内)
- 【新增】支持配置P2P入口地址
- 【新增】SDK内部Activity最终继承父类改为AppCompatActivity
- 【新增】指纹锁代码
- 【新增】AP重启代码
- 【新增】门铃群组消息接口集合
- 【新增】普通设备设置项注释、回放注释等,在implement SDK内接口时记得带上javaDoc,便于理解
- P2PListener的reject回调增加两个exCode1与exCode2(将之前的实现转移到新回调并删除旧回调即可)
- SettingListener新增三个回调,是定制功能,可空实现
- 优化P2P连接
- 修复Index服务器一些BUG(稳定版,建议使用)
- 增加Index服务器支持
- 修复本地录像部分BUG
- 增加视频暂停
- 老版网络请求过时,换新请求(Web SDK),方法集合是HttpSend类