Delphi开发安卓应用如何在息屏或切后台时静音/停止运行的视频
Delphi安卓应用息屏/后台运行视频音频暂停解决方案
1 检测应用切换至后台事件
Delphi自带应用生命周期事件监听能力,直接通过以下方式实现:
- 在主窗体中添加
TApplicationEvents组件 - 绑定组件的
OnEnterBackground事件,该事件会在应用被切到后台(用户切换其他应用、返回系统桌面)时自动触发 - 如需实现切回应用恢复播放的逻辑,可以绑定
OnEnterForeground事件做对应处理
2 检测设备息屏事件
息屏属于安卓系统级事件,需要通过注册系统广播接收器实现监听:
- 先引入以下依赖单元:
Androidapi.JNI.Embarcadero, Androidapi.JNI.GraphicsContentViewText, Androidapi.Helpers, Androidapi.JNI.JavaTypes - 自定义广播接收器,监听安卓系统的
ACTION_SCREEN_OFF(息屏)、ACTION_SCREEN_ON(亮屏)广播动作,示例注册代码如下:var Filter: JIntentFilter; begin Filter := TJIntentFilter.Create; Filter.addAction(TJIntent.JavaClass.ACTION_SCREEN_OFF); Filter.addAction(TJIntent.JavaClass.ACTION_SCREEN_ON); TAndroidHelper.Context.registerReceiver(你的广播接收器实例, Filter); end; - 无需额外申请特殊权限即可正常接收上述两个广播
3 视频播放处理逻辑
- 在
OnEnterBackground事件、ACTION_SCREEN_OFF广播触发时,先判断当前视频播放器是否处于播放状态,是则调用暂停播放接口,停止音频输出 - 可同步记录当前播放进度,在用户切回应用、且同时收到
ACTION_SCREEN_ON+OnEnterForeground事件后,根据产品逻辑选择自动恢复播放或者提示用户手动恢复
内容的提问来源于stack exchange,提问作者Olaf
相关产品推荐
相关产品推荐

