如何在Delphi 10.4开发的安卓应用中设置TMediaPlayer的播放速度?
Delphi 10.4 安卓端 TMediaPlayer 调整播放速度实现方案
Delphi 自带的 TMediaPlayer 没有直接暴露安卓平台的调速接口,需要调用安卓底层 MediaPlayer API 实现1x/2x/4x档位调速,具体实现如下:
前置准备
- 项目 Target SDK 版本需设置为 ≥23,仅安卓6.0及以上系统支持原生调速接口
- 代码单元需引入以下依赖:
- FMX.Media
- FMX.Media.Android
- FMX.Helpers.Android
- Androidapi.JNI.Media
- Androidapi.JNI.JavaTypes
核心调速函数
procedure SetMediaPlaybackSpeed(APlayer: TMediaPlayer; ASpeed: Single); var JMediaPlayer: JMediaPlayer; PlaybackParams: JPlaybackParams; begin // 播放器未激活时直接退出 if not APlayer.Active then Exit; // 获取FMX封装的原生安卓MediaPlayer实例 JMediaPlayer := TJMediaPlayer.Wrap((APlayer as IAndroidMediaPlayer).GetMediaPlayer); if not Assigned(JMediaPlayer) then Exit; // 设置播放速度 PlaybackParams := JMediaPlayer.getPlaybackParams; PlaybackParams.setSpeed(ASpeed); JMediaPlayer.setPlaybackParams(PlaybackParams); end;
档位调用示例
- 切换1倍速:
SetMediaPlaybackSpeed(MediaPlayer1, 1.0); - 切换2倍速:
SetMediaPlaybackSpeed(MediaPlayer1, 2.0); - 切换4倍速:
SetMediaPlaybackSpeed(MediaPlayer1, 4.0);
注意事项
如果调用调速后出现音频无声、卡顿问题,可先暂停/停止播放再执行调速,再恢复播放,示例流程:
MediaPlayer1.Stop; SetMediaPlaybackSpeed(MediaPlayer1, 4.0); MediaPlayer1.Play;
- 需确保调用调速接口前,MP3文件已经完成加载,播放器处于可播放状态
- 该实现仅适配安卓平台,多端兼容场景需单独适配其他平台的对应接口
内容的提问来源于stack exchange,提问作者Ias Trainer
相关产品推荐
相关产品推荐

