You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 09:45:03