您的位置:首页 > 编程语言

T3 DVR应用代码及功能分析文档

2017-05-10 17:10 821 查看

T3 DVR应用代码及功能分析文档

概要:

T3 DVR应用代码及功能分析文档
一代码结构

二类的说明
1UI部分

2Camera封装操作

3服务

4异步任务

5数据库操作

6接口类

7广播监听器

8工具类

9IPC 接口描述

三功能列表
预览及录像

紧急视频

拍照

文件浏览

设置

四功能实现流程分析
文件循环删除流程分析

倒车监听

USB摄像头插拔

五T3 新增API
camerastartRender

camerastopRender

camerasetWaterMark

camerasetAnalogInputColorint value

camerasetCameraFlipStatusint flip

mediaRecordersetNextSaveFileString filePath

一、代码结构

DVR应用整体采用MVC框架

下面为项目的包结构目录:



com.xinzhihui.mydvr:Application、Activity等

com.xinzhihui.mydvr.adapter:适配器包

com.xinzhihui.mydvr.asynctask:异步任务包

com.xinzhihui.mydvr.db:数据库管理包

com.xinzhihui.mydvr.fragment:fragment包

com.xinzhihui.mydvr.listener:接口回调包

com.xinzhihui.mydvr.model:处理元素

com.xinzhihui.mydvr.receiver:广播监听器包

com.xinzhihui.mydvr.service:服务类包

com.xinzhihui.mydvr.utils:工具类包

二、类的说明

1)MyApplication

2)AppConfig

1、UI部分

1)BaseActivity

Activity基类,配合ActivityCollector进行Activity的管理;

2)ActivityCollector

负责Activity的管理,内部使用集合List保存activity实例;

3)MainActivity

工厂设置界面,用于设置前后摄像头id;

T3平台摄像头id分配:

video 0、1:usb摄像头

video 2、3:CSI摄像头

video 4、5、6、7:TVIN摄像头

4)CameraActivity

双路预览界面,使用SurfaceTexture对Camera进行预览;

5)FileList2Activity

文件浏览界面,包含紧急视屏、前路视屏、后路视屏、图片共4个fragment界面;

6)FileListActivity 弃用

7)FloatWindow

倒车界面,采用浮动窗口+SurfaceView的形式;

8)Setting2Activity

设置界面,包括通用设置、前摄像头设置、后摄像头设置共3个fragment界面;

9)SettingActivity 弃用

10)TvdActivity 弃用

11)VideoPlayerActivity

视屏播放器界面,负责应用中视屏媒体的播放(图片预览调用第三方应用)

12)LockVideoFragment

加锁视屏列表界面

13)VideoFileFragment

普通视屏列表界面,前路视屏、后路视屏、图片三个fragment复用该类;

14)SettingBehindFragment

后摄像头设置fragment;

15)SettingFrontFragment

前摄像头设置fragment;

16)SettingGeneralFragment

通用设置fragment;

17)FileListAdapter

适配器,普通视屏、图片列表视屏器;

18)LockVideoAdapter

适配器,加锁视屏文件列表适配器;

2、Camera封装、操作

Camera的封装运用了简单工厂模式+模板方法模式,其中模板方法模式能将前后摄像头不同的逻辑进行很好的拆分;

1)CameraDev

提供部分Camera通用的操作方法,包括open()、preView()、startRecord()、stopRecord()等;录制部分实际操作的管理者为RecordService;

2)CameraFactory

工厂类;

3)FrontCameraDev

继承CameraDev;实现部分抽象函数及模板方法;

4)BehindCameraDev

继承CameraDev;实现部分抽象函数

3、服务

1)RecordService

服务类,管理两路Camera录制及相关的操作;

4、异步任务

1)DeleteFileTask

文件删除异步任务,负责文件的循环删除(文件循环删除机制另外详细说明)

2)DeleteSelectFileTask

文件删除异步任务,负责文件浏览器中长按删除的任务;

3)SavePictureTask

拍照保存异步任务;

5、数据库操作

1)ItemBean

文件数据实体类,应用于文件浏览、数据库操作,包含:title、path、isShow、isSelect等字段;

2)LockVideoDAL

数据库DaL类,负责数据空中文件的加解锁工作;

3)MySqliteOpenHelper

初始化工作,例如数据库的创建(单例模式)

6、接口类

1)CameraStatusListener

USB摄像头插拔状态回调接口;

2)FragmentEventListener

Fragment与Activity通信接口;

7、广播监听器

1)BootBroadcastReceiver

2)TvdStateChangedReceiver

3)UsbCameraStateReceiver

4)UsbStateReceiver

8、工具类

1)ACache

2)AppUtils

3)CommonUtils

4)DateTimeUtil

5)FileOrderUtils

6)FileUtils

7)IOUtils

8)LogUtil

9)SDCardUtils

10)SPUtils

11)StringUtils

9、IPC 接口描述

1)ICameraManager

包含接口方法:

void open(int cameraId);
void startPreView(int cameraId);
void stopPreView(int cameraId);
boolean startRecord(int cameraId);
void stopRecord(int cameraId);


三、功能列表

预览及录像:

1、开机时自动进入后台录像模式(可设置)

2、录制状态时,状态栏显示录制进行状态图标;右上角为录制时间显示;

3、录制保存为通用设置SD卡或者U盘,在通用设置里选U盘或者SD卡作为保存录像路径。

4、在选用外部存储空间时,支持外部存储空间热插拔。

5、录制需对存储进行检测,在没有录像存储设备or为DVR提供的存储空间不足时,按钮点击无效并提示。

6、在指定路径下的DVR/front、behind目录下以当前时间命名保存录制文件。

7、能够后台录制、循环录制、录制不能漏秒。

8、循环删除,当存储空间不足时,对所有(多路)视频进行排序删除,保证有一定的存储空间。

9、对Usb摄像头热插拔做相应处理。

10、适配Usb单节点摄像头和Usb双节点摄像头。

紧急视频:

1、在录制界面模式键选择锁定,能对当前视频进行加锁or解锁。

2、锁定视频不加入循环删除队列。

3、不在录制状态,按钮点击无效并提示。

拍照:

1、在录制界面模式键选择拍照。在指定路径下的DVR/picture目录下以当前时间命名保存拍照文件。

2、拍照时能保证录像后台录制,不用中断录制。

3、在没有录像存储设备or存储空间不足时,按钮点击无效并提示。

文件浏览:

1、在软件录制界面点击视频浏览键进入选择视频浏览界面,只浏览行车记录仪目录下的视频和照片(后台录制继续进行)。

2、双路分四类:紧急视频 、前路视屏、后路视屏、照片

3、文件浏览内置视频播放器,点击视频即可进行播放;点击图片时,选择应用打开。

设置

进入设置需要停止录制(弹框提示)

1、设置分为三类:通用设置、前摄像头、后摄像头

2、通用设置:应用开机自启动、文件存储路径(内外SD卡、U盘)

3、录音开关 :是否打开录音

4、视频水印开关 :是否添加水印 主要是时间信息

5、录制启动设置 :是否开机开启录制状态(后台无预览录制)。

6、视频分辨率 选择:720p、1080p。根据实际支持动态增加选项。

7、录制视频时长:1分钟,2分钟,3分钟。

四、功能实现流程分析

文件循环删除流程分析

倒车监听

USB摄像头插拔

1)录制时插拔

2)预览时插拔

五、T3 新增API

camera.startRender()

camera.stopRender()

camera.setWaterMark()

camera.setAnalogInputColor(int value)

camera.setCameraFlipStatus(int flip)

mediaRecorder.setNextSaveFile(String filePath)

标签(空格分隔): 未分类

在此输入正文
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: