Skip to content

Commit

Permalink
Merge pull request #7 from Sanotsu/refactor_load_audio
Browse files Browse the repository at this point in the history
merge:合并预0.4.1测试版本的修改
  • Loading branch information
Sanotsu authored Nov 2, 2024
2 parents a26070f + 40ec98c commit 86bdb72
Show file tree
Hide file tree
Showing 112 changed files with 2,291 additions and 3,535 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,10 @@ app.*.map.json
ios
**/_demos
**/_tests
linux
macos
windows
web

**/assets/audio
**/assets/test/**
Expand Down
149 changes: 149 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
# Changelog

一些主要的变动放在这里,单纯做个更新记录,是之前的练手项目 [freader(已放弃)](https://github.com/Sanotsu/freader)的衍生。

## 版本说明

### v0.4.1-beta.1

- chore: flutter 升级到了 3.24.4,更新项目相关依赖的版本为当前最新
- fix:
- 修复第一次使用应用,在设备中有大量音频(比如成千上万)时,初始化导入音频很慢的问题;
- 安卓 14 后台播放时通知栏不显示当前播放音频的问题;
- 添加了对解析异常的音频的过滤处理;
- 修正了视频播放在横屏和竖屏时,播放界面中部分按钮显示大小不一致的问题
- feat:
- 在播放详情页面添加了播放列表底部弹窗;
- 主题启用了 Material3.

### v0.4.0-beta.1

- feat: 添加了恐龙快跑小游戏;
- feat: 添加了贪吃蛇小游戏;
- feat: 添加了扫雷小游戏;
- feat: 添加了数独小游戏。

### v0.3.0-beta.1

- feat: 添加 2048 小游戏;
- feat: 添加俄罗斯方块小游戏;
- docs: 更新 readme 文档为最新版本。

### v0.2.2-beta.1

- feat:
- 将媒体资源模块拆分为“本地视频”和“本地图片”,可分文件夹预览所有的视频或图片资源。
- 添加了媒体资源整合管理的“全部资源”模块,可条件查询、分类型展示。图片、视频、音频点击后调用各自播放器播放或预览。
- 添加了视频播放时左边上下滑动屏幕调整应用内亮度、右边上下滑动屏幕调整系统音量的功能。可原分辨率和全屏播放视频。
- deprecated:
- 因为实测 `photo_namager``PhotoManager.getAssetPathList()`条件查询时,使用 `AdvancedCustomFilter/ CustomFilter` 的 filter 和 type 中指定`RequestType`不能同时生效(始终是全部类型的资源),所以“本地视频”和“本地图片”默认显示所有,不可筛选(“全部资源”模块可以,因为是构建的 sql 查询带上来 mediaType)。
- 因为对文件操作的安全性要求越来越严格,不再继续添加对媒体文件的异动操作(比如重命名、复制、删除等)
- fix:
- 修复了一些小 bug。
- perf:
- 清除大量无用的测试、打印等代码,清理一些原本预留的功能但后续不做的模块。
- bonus:
- 添加长按退出弹窗的正文,可切换底部导航栏显示的数量(可隐藏“本地图片”和“本地视频”模块,因为功能基本和“全部资源重复”)。
- warning:
- 实测,使用 Windows7 系统自带的演示范例视频`Wildlife.wmv`会有很多问题:
- 这个`photo_manager`库基本无法正常解析(可以判断出是个视频,但无法生成缩略图,无法识别出视频长度等等内容,还会输出一堆报错);
- 因此直接`AssetEntity`获取的`file`也就无法使用`video_player`进行正常播放了。
- 没有测试过视频分辨率大于设备分辨率的视频播放。
- 在 Nubia Z50 Ultra (分辨率 `2480 * 1116`)、xiaomi 6(分辨率 `1920 * 1080`)下进行实机测试,app 正常使用。
- 但是如果是`flutter run -v`运行本项目,前者在 Android 13 时正常,升级到 Android 14 后,运行项目会卡住在 `Waiting for VM Service port to be available...`,目前还没有搜索到类似出现的原因。
- “本地音乐”模块在退出后重新打开 app 保留上次播放的列表和音乐时,第一次或者第二次时不对,多几次后面是正常的,原因不明,不是很影响使用,后续有空再继续查看。

### v0.2.1-beta.1

根据提交记录先后:

- refactor:之前示例的用户中心简化成抽屉;清除关于主题切换的所有逻辑,后续再添加;
- fix:修正上下一曲时为更新记录当前音乐缓存的问题;
- fix: 修正每次打开 app 当前播放音乐是固定而不是上次退出时的音乐;
- fix: 使用 GetStorage 代替 SharedPreferences 缓存当前播放音乐歌单和编号等信息;
- perf: 基本简单优化了‘本地音乐’模块的所有内容,清除大量无意义的 print,修复部分细节布局和小问题;
- feat: 后台播放时,状态栏基本可以显示音频缩略图了;
- fix: 修正 Android13 访问内部存储处理方式不正确的问题;修正音频播放详情页面的一些细节;删除无意义的 drawer;
- chore:升级使用的 flutter 环境为 3.16.7,相关组件库依赖也升级为可用的最新。

### v0.2.0-beta

- feat:完成音频播放、图片浏览、视频观看的基本功能。

### v0.1.0-beta

- feat:可以播放本地音频,按照歌单、全部、歌手、专辑的 tab 区分。

## 更新日志

### 2024-11-02 主要更新

- fix: 修正了视频播放在横屏和竖屏时按钮显示大小不一致的问题。

### 2024-10-30 主要更新

- fix: 添加了对解析异常的音频的过滤处理。
- 比如酷狗封装的 `xxx.kgm.flac`,会被识别成音频但实际无法播放。
- fix: 修正了恢复上次音乐播放记录时未正确过滤无法解析音频的问题;一些其他显示细节。

### 2024-10-29 主要更新

- fix: 修复第一次使用应用,在设备中有大量音频(比如成千上万)时,初始化导入很慢的问题;
- fix: 安卓 14 后台播放时通知栏不显示当前播放音频的问题;
- feat: 在播放详情页面添加了播放列表底部弹窗;主题启用了 Material3。

### 2024-10-26 主要更新

- chore: 升级了 flutter 版本到 3.24.4,更新项目相关依赖的版本为当前最新。

### 2024-02-01 主要更新

- feat:添加了扫雷小游戏
- 更多参看对应模块的 [readme](lib/views/game_center/minesweeper/readme.md)

### 2024-01-31 主要更新

- feat:添加了恐龙快跑小游戏
- 更多参看对应模块的 [readme](lib/views/game_center/t-rex_dinosaur/readme.md)
- feat:添加了贪吃蛇小游戏
- 更多参看对应模块的 [readme](lib/views/game_center/snake/readme.md)

### 2024-01-30 主要更新

- feat:添加了俄罗斯方块小游戏
- 更多参看对应模块的 [readme](lib/views/game_center/tetris/readme.md)

### 2024-01-29 主要更新

- feat:添加了 2048 小游戏
- 更多参看对应模块的 [readme](lib/views/game_center/flutter_2048/readme.md)
- 添加了休闲游戏模块后,原本的“本地图片”和“本地视频”模块就初始默认隐藏,同样长按退出弹窗正文可切换。

### 2024-01-26 主要更新

- feat:
- 将媒体资源模块拆分为“本地视频”和“本地图片”,可分文件夹预览所有的视频或图片资源。
- 添加了媒体资源整合管理的“全部资源”模块,可条件查询、分类型展示。图片、视频、音频点击后调用各自播放器播放或预览。
- 添加了视频播放时左边上下滑动屏幕调整应用内亮度、右边上下滑动屏幕调整系统音量的功能。可原分辨率和全屏播放视频。
- deprecated:
- 因为实测 `photo_namager``PhotoManager.getAssetPathList()`条件查询时,使用 `AdvancedCustomFilter/ CustomFilter` 的 filter 和 type 中指定`RequestType`不能同时生效(始终是全部类型的资源),所以“本地视频”和“本地图片”默认显示所有,不可筛选。
- 因为对文件操作的安全性要求越来越严格,不再继续添加对媒体文件的异动操作(比如重命名、复制、删除等)
- fix:修复了一些小 bug。
- perf:清除大量无用的测试、打印等代码,清理一些原本预留的功能但后续不做的模块。
- bonus:添加长按退出弹窗的正文,可切换底部导航栏显示的数量(可隐藏“本地图片”和“本地视频”模块,因为功能基本和“全部资源重复”)。
- warning:
- 实测,使用 Windows7 系统自带的演示范例视频`Wildlife.wmv`会有很多问题:
- 这个`photo_manager`库基本无法正常解析(可以判断出是个视频,但无法生成缩略图,无法识别出视频长度等等内容,还会输出一堆报错);
- 因此直接`AssetEntity`获取的`file`也就无法使用`video_player`进行正常播放了。
- 没有测试过视频分辨率大于设备分辨率的视频播放。
- 在 Nubia Z50 Ultra (分辨率 `2480 * 1116`)、xiaomi6(分辨率 `1920 * 1080`)下进行实机测试,app 正常使用。
- 但是如果是`flutter run -v`运行本项目,前者在 Android 13 时正常,升级到 Android 14 后,运行项目会卡住在 `Waiting for VM Service port to be available...`,目前还没有搜索到类似出现的原因。
- “本地音乐”模块在退出后重新打开 app 保留上次播放的列表和音乐时,第一次或者第二次时不对,多几次后面是正常的,原因不明,不是很影响使用,后续有空再继续查看。

### 2024-01-12 主要更新

- 添加了后台播放时通知栏可显示音频缩略图;
- 修正了记录上次播放歌单和歌曲功能未生效的问题;
- 简单重构了本地音乐模块,清除大量无用和无意义的输出、预留功能等代码;
- 升级 flutter 环境为 3.16.7,相关组件库依赖也升级为可用的最新版本;
- 在 Nubia Z50 Ultra 下进行实机测试(Android 13 , 分辨率 `2480 * 1116` )。
161 changes: 37 additions & 124 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,141 +1,52 @@
# freader-media-player
# Freader Media Player

freader-media-player(FMP Player),一个使用 flutter 开发的简单的本地媒体播放器,用于播放本地音频,浏览本地图片,观看本地视频。
freader-media-player(FMP Player),一个使用 flutter 开发的简单的本地媒体资源播放器:

额外添加了“2048”和“俄罗斯方块”小游戏,做到“视听娱乐”不耽误。
- 可用于播放本地音频、浏览本地图片、观看本地视频。
- 添加了“2048”、“俄罗斯方块”、“恐龙快跑”、“贪吃蛇”、“扫雷”、“数独”等小游戏。
- 尝试做到“视听娱乐”不耽误。

## 更新说明

[CHANGELOG](CHANGELOG.md)

## 主要功能

- 本地音乐
- 拥有`全部``歌单``歌手``专辑`的模块分类,每个模块都可自主关键字查询、调整排序;
- 可以后台播放,状态栏有显示歌曲名称。
- 全部资源
- 默认扫描设备中的所有音频、视频、图片等媒体文件所在路径,可分类筛选和资源文件关键字模糊查询;
- 文件夹可以切换网格显示或列表显示。
- 点击某一个文件夹后可显示对应筛选结果的媒体资源列表,也可切换网格或列表显示;
- 再点击指定文件夹中指定资源之后,可以进行预览或者播放:
- 如果点击的是图片文件,可左右滑动查看该文件夹下所有图片,并提供双指缩放等功能;
- 如果点击的是音频文件,默认该文件夹下所有音频文件都加入当前播放列表,和“本地音乐”模块共用播放;
- 区别在于:“本地音乐”播放的音乐会在退出 app 后保留上次播放的列表和音乐,“全部资源”模块不会。
- 如果点击的是视频文件,默认该文件夹下所有视频文件都加入当前播放列表,视频播放器会自动连播。
- 此外,视频播放器有上一个、暂停、下一个、全屏、关闭,上下滑动屏幕左侧调节应用亮度、上下滑动屏幕右侧调节系统音量、左上角显示视频名称,等功能。
- 播放器默认根据视频是横屏或竖屏进行播放。
- 休闲游戏
- 提供“2048”和“俄罗斯方块”小游戏,会本地持久化缓存最高得分。
- 2048 游戏在退出后也会保留当前状态,重新打开如果没有结束还可以继续。
- **本地音乐**
- 提供`全部``歌单``歌手``专辑`分类,支持关键字查询和排序调整。
- 支持后台播放,状态栏显示歌曲名称。
- **全部资源**
- 自动扫描设备中的音频、视频、图片等媒体文件,支持分类筛选和模糊查询。
- 文件夹可切换网格或列表显示,点击文件夹后显示对应媒体资源列表,支持预览或播放。
- 图片支持左右滑动和双指缩放;
- 点击音频文件夹任意音频,会加入到当前播放列表,与“本地音乐”模块共用播放器;
- 退出 app 后不保留该文件夹播放列表;
- 视频文件加入播放列表并自动连播,播放器支持多种控制功能。
- **休闲游戏**
- 添加了“2048”、“俄罗斯方块”、“恐龙快跑”、“贪吃蛇”、“扫雷”、“数独”等小游戏。

**由于权限管控越发严格,本地资源均不再提供任何异动(例如重命名、复制、删除等)功能。**

**由于权限管控越发严格,本地资源均不再提供任何异动(例如重命名、复制、删除等)功能**
粗略截图如下:

开发环境:
![screenshot_fmp](_screenshots/screenshot_fmp.jpg)

- 在 Windows7 主机下使用 VirtualBox7.0 安装的 Ubuntu22.04 虚拟机,配合 VS Code1.85.2 进行开发;
- flutter 版本为 3.16.7,java 版本为 Temurin-11.0.18+10
## 开发环境

仅在下面设备进行过实机测试,其他平台完全没处理:
- 在 Windows 7 主机下使用 VirtualBox7.0 安装的 Ubuntu22.04 虚拟机,配合 VS Code1.94.2 进行开发;
- flutter 版本为 3.24.4,java 版本为 temurin-17.0.6。

- Nubia Z50 Ultra (Android 13 , 分辨率 `2480 * 1116`,游戏页面显示不算好看)
- xiaomi 6 (Android 9 , 分辨率 `1920 * 1080` )
仅在下面设备进行过实机测试,**其他平台完全没处理**

粗略截图如下:
- Nubia Z60 Ultra (Android 14,分辨率 `2480 * 1116`)
- Nubia Z50 Ultra (Android 13,分辨率 `2480 * 1116`)
- xiaomi 6 (Android 13,分辨率 `1920 * 1080` )

![screenshot_fmp](_screenshots/screenshot_fmp.jpg)
## 遗留问题

## 更新说明
<details><summary>暂未处理的问题</summary>

### 2024-02-01 主要更新

- feat:添加了扫雷小游戏
- 更多参看对应模块的 [readme](lib/views/game_center/minesweeper/readme.md)

### 2024-01-31 主要更新

- feat:添加了恐龙快跑小游戏
- 更多参看对应模块的 [readme](lib/views/game_center/t-rex_dinosaur/readme.md)
- feat:添加了贪吃蛇小游戏
- 更多参看对应模块的 [readme](lib/views/game_center/snake/readme.md)

### 2024-01-30 主要更新

- feat:添加了俄罗斯方块小游戏
- 更多参看对应模块的 [readme](lib/views/game_center/tetris/readme.md)

### 2024-01-29 主要更新

- feat:添加了 2048 小游戏
- 更多参看对应模块的 [readme](lib/views/game_center/flutter_2048/readme.md)
- 添加了休闲游戏模块后,原本的“本地图片”和“本地视频”模块就初始默认隐藏,同样长按退出弹窗正文可切换。

### 2024-01-26 主要更新

- feat:
- 将媒体资源模块拆分为“本地视频”和“本地图片”,可分文件夹预览所有的视频或图片资源。
- 添加了媒体资源整合管理的“全部资源”模块,可条件查询、分类型展示。图片、视频、音频点击后调用各自播放器播放或预览。
- 添加了视频播放时左边上下滑动屏幕调整应用内亮度、右边上下滑动屏幕调整系统音量的功能。可原分辨率和全屏播放视频。
- deprecated:
- 因为实测 `photo_namager``PhotoManager.getAssetPathList()`条件查询时,使用 `AdvancedCustomFilter/ CustomFilter` 的 filter 和 type 中指定`RequestType`不能同时生效(始终是全部类型的资源),所以“本地视频”和“本地图片”默认显示所有,不可筛选。
- 因为对文件操作的安全性要求越来越严格,不再继续添加对媒体文件的异动操作(比如重命名、复制、删除等)
- fix:修复了一些小 bug。
- perf:清除大量无用的测试、打印等代码,清理一些原本预留的功能但后续不做的模块。
- bonus:添加长按退出弹窗的正文,可切换底部导航栏显示的数量(可隐藏“本地图片”和“本地视频”模块,因为功能基本和“全部资源重复”)。
- warning:
- 实测,使用 Windows7 系统自带的演示范例视频`Wildlife.wmv`会有很多问题:
- 这个`photo_manager`库基本无法正常解析(可以判断出是个视频,但无法生成缩略图,无法识别出视频长度等等内容,还会输出一堆报错);
- 因此直接`AssetEntity`获取的`file`也就无法使用`video_player`进行正常播放了。
- 没有测试过视频分辨率大于设备分辨率的视频播放。
- 在 Nubia Z50 Ultra (分辨率 `2480 * 1116`)、xiaomi6(分辨率 `1920 * 1080`)下进行实机测试,app 正常使用。
- 但是如果是`flutter run -v`运行本项目,前者在 Android 13 时正常,升级到 Android 14 后,运行项目会卡住在 `Waiting for VM Service port to be available...`,目前还没有搜索到类似出现的原因。
- “本地音乐”模块在退出后重新打开 app 保留上次播放的列表和音乐时,第一次或者第二次时不对,多几次后面是正常的,原因不明,不是很影响使用,后续有空再继续查看。

### 2024-01-12 主要更新

- 添加了后台播放时通知栏可显示音频缩略图;
- 修正了记录上次播放歌单和歌曲功能未生效的问题;
- 简单重构了本地音乐模块,清除大量无用和无意义的输出、预留功能等代码;
- 升级 flutter 环境为 3.16.7,相关组件库依赖也升级为可用的最新版本;
- 在 Nubia Z50 Ultra 下进行实机测试(Android 13 , 分辨率 `2480 * 1116` )。

---

是之前的练手项目[freader](https://github.com/Sanotsu/freader)的衍生。

## 项目说明

主要项目结构:

```txt
├── lib
   ├── common
   ├── layout
   ├── models
   ├── services
  ├── views
   └── main.dart
```

主要使用的插件库:

- on_audio_query: ^2.9.0
- just_audio: ^0.9.36
- just_audio_background: ^0.0.1-beta.11
- audio_session: ^0.1.18
- get_it: ^7.6.6
- provider: ^6.1.1
- marquee: ^2.2.3
- permission_handler: ^11.1.0
- path_provider: ^2.1.2
- video_player: ^2.8.2
- flick_video_player: ^0.7.0
- photo_manager: ^3.0.0-dev.5
- photo_view: ^0.14.0
- get_storage: ^2.1.1
- screen_brightness: ^0.2.2+1
- flutter_volume_controller: ^1.3.1
- flutter_riverpod: ^2.4.9
- flutter_swipe_detector: ^2.0.0
- soundpool: ^2.4.1
- ……

## 很多问题
### **2024-02-19**

- 使用的组件相关
1. on_audio_query: ^2.9.0
Expand All @@ -159,3 +70,5 @@ freader-media-player(FMP Player),一个使用 flutter 开发的简单的本地
- 因为不是很影响使用,虽然不明白为什么,也没有去处理。
3. 在手机升级到 Android14 后,`flutter run -v`启动卡在 Waiting for VM Service port to be available...,就无法热加载或其他操作,原因不明。
- 以及其他使用 flutter 经验不足或能力不足的各种问题。

</details>
Loading

0 comments on commit 86bdb72

Please sign in to comment.