V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xiguadong
V2EX  ›  Android

用 flutter 做了一个听书软件

  •  
  •   xiguadong · 2023-11-09 10:39:06 +08:00 · 9557 次点击
    这是一个创建于 380 天前的主题,其中的信息可能已经有所发展或是发生改变。

    用户直接从后台拉到前台 然后杀死 app 会导致播放进度丢失 有什么好方法呢 不想定时任务保存记录

    27 条回复    2023-11-10 14:22:25 +08:00
    iOCZS
        1
    iOCZS  
       2023-11-09 10:53:39 +08:00
    定时保存,实时保存,APP 退出回调保存,播放 widget deinit 保存
    xiguadong
        2
    xiguadong  
    OP
       2023-11-09 10:55:31 +08:00
    @iOCZS 只能这样吗 定时存感觉太 lou 了
    iOCZS
        3
    iOCZS  
       2023-11-09 11:01:05 +08:00
    @leetomlee123 那你就想错了,最简单直接的才是最健壮的。机器就适合做这种高频率的工作。你想啊,你音频播放,肯定有进度在实时刷新吧,有时候是个进度条啥的,那你刷新的时候赶紧同步不就好了。有时候你只是封面图转一下,但是播放进度其实还是有回调或者你可以定时去获取一下。
    xiguadong
        4
    xiguadong  
    OP
       2023-11-09 11:04:43 +08:00
    @iOCZS 安卓就不能捕获后台拉到前台这个状态吗 只保存一次才优雅 强迫症的我接受不了
    Oneup
        5
    Oneup  
       2023-11-09 11:05:13 +08:00
    @iOCZS 赞同
    sentinelK
        6
    sentinelK  
       2023-11-09 11:07:02 +08:00
    @leetomlee123 "安卓就不能捕获后台拉到前台这个状态吗"

    flutter 不清楚,但是 Android 本身是可以的,对应的是生命周期中的 onResume 事件。
    xiguadong
        7
    xiguadong  
    OP
       2023-11-09 11:08:38 +08:00
    @sentinelK 我的意思是后台拉到任务栏 而不是直接回到前台 触发不了 onresume
    AlanStar
        8
    AlanStar  
       2023-11-09 11:13:02 +08:00
    Android 原生的 Activity 生命周期有 onPause()和 onResume(),flutter 可以通过 WidgetsBindingObserver 检测到前后台切换状态(后半段是查到的)。
    关于播放进度,可以考虑这几个方案
    1.用生命周期的方式来控制,比如 Activity 获得焦点和失去焦点时各就执行一次播放进度记录,这样就不会显得那么刻意。
    2.提示用户关闭 APP 电量管理限制以使用类似 service 的机制监听用户的行为变化从而做记录。
    后者可能会让人比较反感,不太建议
    AoEiuV020JP
        9
    AoEiuV020JP  
       2023-11-09 11:34:49 +08:00
    软件开源不?有些兴趣,
    听书是本地用户自行导入的书还是有提供资源?
    daniel11
        10
    daniel11  
       2023-11-09 11:59:46 +08:00
    我最近也是有个想法,也想问题是自用呀还是会发布,如果发布的话书的资源如何处理的,书的版权怎么处理
    xiguadong
        11
    xiguadong  
    OP
       2023-11-09 13:14:36 +08:00
    @AoEiuV020JP http://116.204.64.93:5244/d/v1/tsl.apk
    xiguadong
        12
    xiguadong  
    OP
       2023-11-09 13:15:03 +08:00
    @daniel11 解析别人网站的
    xiguadong
        13
    xiguadong  
    OP
       2023-11-09 13:15:30 +08:00
    @AlanStar 不知道有没有 flutter 插件支持 不懂原生
    jifengg
        14
    jifengg  
       2023-11-09 13:19:43 +08:00
    前段时间也做了一个听故事的 flutter 项目,用的是 audioplayers 包,它有 onPositionChanged 可以监听进度变化。你可以在里面加个判断,距离上一次保存多少秒了就再保存一次。
    xiguadong
        15
    xiguadong  
    OP
       2023-11-09 13:23:09 +08:00
    @jifengg 不喜欢这种
    daotiangeng
        16
    daotiangeng  
       2023-11-09 13:31:03 +08:00
    @leetomlee123 下不了,提示病毒
    xiguadong
        17
    xiguadong  
    OP
       2023-11-09 13:38:54 +08:00
    xiguadong
        18
    xiguadong  
    OP
       2023-11-09 13:38:54 +08:00
    kosmosr
        19
    kosmosr  
       2023-11-09 13:45:41 +08:00 via iPhone
    不如问问 gpt ,我写 flutter 很多代码都是请教 gpt 写的
    xiguadong
        20
    xiguadong  
    OP
       2023-11-09 14:06:05 +08:00
    @kosmosr 不知道如何描述
    lin7946
        21
    lin7946  
       2023-11-09 15:09:35 +08:00   ❤️ 4
    看完下来就看到 OP 不想/不喜欢/不知道/6 .....
    yyyyhere
        22
    yyyyhere  
       2023-11-09 17:28:22 +08:00
    重写 didChangeAppLifecycleState 方法
    K2
        23
    K2  
       2023-11-10 08:04:07 +08:00
    最近在用这个作者的听书 app ,也有 android 版本。好处是可以直接导入 epub 或 txt ,然后用微软语音朗读,能实时保存进度,还支持音译后离线播放。
    K2
        24
    K2  
       2023-11-10 08:04:57 +08:00
    ltq918
        25
    ltq918  
       2023-11-10 10:05:20 +08:00 via Android
    Android 中似乎有一个 onTaskRemoved()
    xunqin
        26
    xunqin  
       2023-11-10 10:37:01 +08:00
    @K2 感谢
    xiguadong
        27
    xiguadong  
    OP
       2023-11-10 14:22:25 +08:00
    @ltq918 ok 研究下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2425 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:00 · PVG 00:00 · LAX 08:00 · JFK 11:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.