a demo to use P2P-Core
Switch branches/tags
Nothing to show
Clone or download
Latest commit 72e3116 Jun 13, 2018

README.md

GwellDemo Build Status Download

1.Demo function List

可开发除配网外所有Yoosee已开发的功能,配网在下面说明中单独列出,对于Demo中的内容,会根据实际情况增加;
以下功能已经完成

  • 登陆(Login)  
  • 监控(Moniter)
  • 回放(Playback)
  • 注册(registered)
  • 获取报警图片(Get the alarm picture)
  • 发现局域网设备
  • 局域网设备体检
  • 传感器(Sensor)
  • 报警邮箱(Alarm email)
  • 设置
    • 报警设置

2.APK下载地址

3.常见问题

4.SDK说明文档

P2P-Core 使用说明

1.版本记录

0.4.4 (2018.03.05)
  • 【优化】使用Rxjava2.x替代Rxjava1.x版本
  • 【新增】P2PConnect增加app版本参数
0.4.3 (2017.07.14)
  • 【优化】服务器返回设备信息增加布撤防状态标记
  • 【新增】新增Session2,服务于异地登录功能
0.3.8 (2017.04.14)
  • 【修复】本地录像异常
0.3.7 (2017.04.11)
  • 【修复】ThirdPartLogin接口的返回的JavaBean与服务器命名不同,导致无法JSON解析,【注意】引用http里面的Result对象
0.3.6 (2017.04.10)
  • 【修复】getAccountByPhoneNO与ThirdPartLogin接口的返回类型报错(can't cast Class)
0.3.3 (2017.03.31)
  • 【新增】getAccountByPhoneNO接口返回实体类getAccountByPhoneNoResult,参见HttpSend
0.3.1 (2017.03.29)
  • 【修复】获取普通设置项的数据异常
  • 【修复】部分Android 7.0设备在全景摄像头监控完成后退出崩溃
  • 【新增】门铃离线消息与消息接收结束接口
  • 【BUG】语音对讲无声音传输(不要使用这个版本)
更多历史版本...

2.集成

不提供Eclipse的集成方式,如有需要可自行寻找解决办法(参考,未经实践,如有成功的小伙伴,可发总结交流文章给作者)

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    ......
    compile 'com.p2p.core:p2p-core:0.4.4'
}

3.使用(Web接口P2P接口完整Doc文档)

在自定义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的IP2PISetting

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回调
    	}
    ...
	...
}

4.备注

  • 代码顺序: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.soSDL.somp4v2.so(如果有的话)删除(P2P-Core已包含)
  • NDK 暂时仅支持ARM 32位,更多支持还在开发中,大部分手机已够用
  • Web接口(与服务器交互)方法都在HttpSend中。
  • P2P功能(与设备交互)方法都在P2PHandler中,使用前确保设备在线,并且P2P初始化正常,后续会加强代码注释
  •  代码与接口有少许修改,如果之前已经在使用Module的,改用Gradle之后,有其他使用上的问题,可询问技术支持
  • P2P消息简易流程图如下

P2P消息简易流程图

5.关于图像

  • 监控结束时会保存一张图片到SD卡,路径:~/screenshot/tempHead/{$UserID}/{$deviceid}.jpg
  • 手动截图路径:~/screenshot/{$deviceid}_{$time}.jpg

6.技术支持  

  •  对库有任何疑问可在issues
  •  也可询问人工技术支持

7.配网(让摄像头链接网络)  

 配网是是添加摄像头的前期必要步骤,但已联网的设备不需此步骤。配网代码流程相似,基本都是将WiFi信息通过某种方式发给设备,设备连接成功之后通过UDP告知APP自身信息  

8.WebAPI反馈码说明

  • 1.由于服务器使用了新的反馈码,旧代码中的定义基本废除 所以,每一份与webAPI通信的代码都需要经历一次改造
  • 新反馈码是16进制字符串,之前代码中大量存在Integer.paser(error_code)的情况 使用新webAPI之后这部分会崩溃
  • 新反馈码与旧码不是一一对应的,所以旧版中发现新版没有对应时可删除对应反馈码的逻辑处理代码
  • 新反馈码含义参见下图,代码中可通过HttpErrorCode引用
  • 新反馈码查询

9.包含的三方库

C/C++

更多历史版本

0.2.8 (2017.03.23)
  • 【修复】局域网呼叫失败
  • 【新增】微信登陆接口,参见HttpSend的WeChatLogin
0.2.7 (2017.03.22)
  • 【修复】获取报警图片大概率获取失败
  • 【新增】支持targetSdkVersion 23+
0.2.6 (2017.03.21)
  • 【修复】新版WebAPI下服务器返回2个新错误码标记更换服务器地址
  • 【修复】解决依然耗电(占用CPU)的情况(10%--->5%以内)
  • 【新增】支持配置P2P入口地址
  • 【新增】SDK内部Activity最终继承父类改为AppCompatActivity
  • 【新增】指纹锁代码
  • 【新增】AP重启代码
  • 【新增】门铃群组消息接口集合
  • 【新增】普通设备设置项注释、回放注释等,在implement SDK内接口时记得带上javaDoc,便于理解
0.2.3 (Yoosee 15)
  • P2PListener的reject回调增加两个exCode1与exCode2(将之前的实现转移到新回调并删除旧回调即可)
  • SettingListener新增三个回调,是定制功能,可空实现
  • 优化P2P连接
  • 修复Index服务器一些BUG(稳定版,建议使用)
0.2.2 (Yoosee 14)
  • 增加Index服务器支持
  • 修复本地录像部分BUG
  • 增加视频暂停
  • 老版网络请求过时,换新请求(Web SDK),方法集合是HttpSend