AutoPlay功能文档
1 需求来源:
客户要求在原有的软件版本基础上增加挂载SD卡和USB设备时,系统能够自动播放对应设备上的媒体(暂时支持视频和图片)文件。
2 功能描述:
用户在设置界面设置AutoPlay播放的类型,可以选择自动播放SD卡或者外接USB中的全部视频文件或者图片文件,也可以选择播放SD卡中指定的视频或者图片文件。见图1.0
图1.0
3 实现思路:
3.1.将用户的设置永久化存储,便于读取
3.2 将SD卡或者USB中的视频文件或者图片文件以软件的形式链接到应用的/data/data/appname/file/xxxx文件夹下面(appname:为应用的包名,xxxx:代表自定义的文件夹名称),见图1.1
图1.1
3.3当启动Autoplay时,系统自动根据用户的设置去/data/data/appname/file/xxxx中去匹配用户选定的媒体文件进行播放或者显示
4 具体实现:
4.1 用ContentProvider来保存用户的设置,具体见图1.2和表1.0
图:1.2
表:1.0
| _id | auToPlay_sp_path | auToPlay_sp_type | auToPlay_sp_file | auToPlay_sp_modle | auToPlay_sp_formAutoPlay | auToPlay_sp_isFristBoot | auToPlay_switch | autoplay_last_memory_file |
描述 | 主键 | 用户选择的是SD/USB | 用户选择的是PHOTO/MOVIE | 用户选定文件 | 当前是SD/USB | 当前是否从autoPlay启动(区别于用户直接启动视频播放器) | 判断系统是否是第一次启动 | 保存AutoPlay的开关 | 保存上一播放或者显示文件 |
可用值 | 自增长 | 1、2 | 3、4、5、6 | 文件名 | /storage/usb0、/storage/sdcard1 | 0、1 | 0、1 | 0、1 | 文件绝对路径 |
表示含义 | 唯一性 | 保存用户在设置界面选择的是SD或者USB(参考4.2 关于USB参数组合) | 3:SUB中的视频文件 4:SUB中的图片文件 5:SD中的视频文件 6:SD中的图片文件(参考4.2 关于USB参数组合) | 用户在设置界面选择的特定文件的名称 | USB和SD卡的路径 | 0:不是 1:是 | 0:不是 1:是 | 0:关闭 1:开启 | 每次系统自动保存当前播放或者显示文件。如果auToPlay_sp_file存在的话,autoplay_last_memory_file就会失效 |
4.2 关于USB参数组合
1+3,代表AutoPlay启动播放USB中的视频文件,默认从USB中的第一个视频文件开始播放,同时系统会记住当前文件的绝对路径以便于下一次从该文件开始播放或者显示;1+4,代表AutoPlay启动显示USB中的图片文件,默认重USB中的第一个图片文件开始显示,同时系统会记住当前文件的绝对路径以便于下一次从该文件开始播放或者显示;1+特定文件,系统会根据特定文件的类型自动判断特定文件属于视频或者图片去显示或者播放。如何选择了特定文件,系统每次启动AutoPlay都会从该文件开始显示或者播放。
4.3 关于SD参数组合
2+5,代表AutoPlay启动播放SD中的视频文件,默认从SD中的第一个视频文件开始播放,同时系统会记住当前文件的绝对路径以便于下一次从该文件开始播放或者显示;2+6,代表AutoPlay启动显示SD中的图片文件,默认重SD中的第一个图片文件开始显示,同时系统会记住当前文件的绝对路径以便于下一次从该文件开始播放或者显示;2+特定文件,系统会根据特定文件的类型自动判断特定文件属于视频或者图片去显示或者播放。如何选择了特定文件,系统每次启动AutoPlay都会从该文件开始显示或者播放。
4.4监听系统挂载SD卡和USB的广播来启动Video或者Photo
4.4.1系统在监听到挂载的广播时,会做四件事情:删除原有软连接(异步)、建立新的软连接(异步)、根据用户设置去匹配即将播放或者显示的文件(异步)、播放或者显示
4.4.2 删除原有软连接系统会删除在/data/data/appanme/xxxx/文件夹中的软连接文件
4.4.3建立新的软连接根据用户挂载的设备和保存在ContentProvider的设置重新在/data/data/appanme/xxxx/建立视频或者图片的软链接
4.4.4根据用户设置去匹配即将播放或者显示的文件如果用户没有选择特定的文件,系统就默认/data/data/appanme/xxxx/下面的第一个文件为目标文件。如果用户选择了特定的文件,系统就会去/data/data/appanme/xxxx/中根据特定文件的名称去匹配,如果匹配的文件因为某些原因不存在的话系统就会默认第一个文件为目标文件。
4.4.5播放或者显示在2.1.3的匹配过程中,系统会自动识别用户选择的是视频文件或者图片文件。再根据文件类型启动系统的视频播放器或者图片显示器。
4.4.6 LastMemory功能客户要求开启AutoPaly功能后,每次播放要从上一次结束的视频开始。如果用户选择了特定的文件,那么系统就会播放或者显示特定的文件LastMomery文件就会失效。
5 应用技术关键字:
ContentProvider、SoftLink、BroadcastReceiver、<SoftReference>
6 功能架构:
MVP实现逻辑业务、跟新UI和数据模型分离,模块职责划分明显,减低代码的耦合度。
7 注意事项:
7.1最初永久化存储使用的是SharedPreferences,出现获取数据不实时的问题
7.2 关于接受系android.intent.action.MEDIA_UNMOUNTED和android.intent.action.MEDIA_MOUNTED广播延时问题