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

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框架
下面为项目的包结构目录:
T3 DVR应用代码及功能分析文档_第1张图片

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)

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


在此输入正文

你可能感兴趣的:(Android其他)