如何在Delphi FireMonkey iOS应用中存储与播放媒体文件?
iOS下FireMonkey(Delphi 10.1 Berlin)音频文件的存储与播放方案
结合你已经掌握的部署步骤,我来详细拆解iOS平台的具体操作和代码实现:
一、确认部署配置(关键!)
你已经知道用Project | Deployment面板添加文件,但iOS的Remote Path必须设置正确,才能让应用访问到音频文件:
- 选择
iOS Device平台,添加你的MP3文件后,将Remote Path设置为Documents(这是应用沙箱里的可读写目录,能确保应用正常读取文件) - 确保
Local Path指向你本地的MP3文件,Remote Name保持和本地文件名一致(iOS区分大小写,别写错!)
二、获取音频文件的正确路径
iOS应用运行在沙箱中,路径是动态生成的,不能硬编码。用Delphi的System.IOUtils.TPath类来获取Documents目录的绝对路径,再拼接你的音频文件名:
uses System.IOUtils, FMX.Media; function GetAudioFilePath(const FileName: string): string; begin // 获取应用沙箱的Documents目录路径 Result := TPath.Combine(TPath.GetDocumentsPath, FileName); end;
三、用TMediaPlayer播放音频
接下来就可以用你熟悉的TMediaPlayer来播放了,代码示例:
procedure TForm1.PlayAudioBtnClick(Sender: TObject); var AudioPlayer: TMediaPlayer; AudioPath: string; begin AudioPlayer := TMediaPlayer.Create(nil); try AudioPath := GetAudioFilePath('your_audio_file.mp3'); // 替换成你的实际文件名 if TFile.Exists(AudioPath) then begin AudioPlayer.FileName := AudioPath; AudioPlayer.Play; end else begin ShowMessage('音频文件未找到,请检查部署配置!'); end; finally // 如果需要长期播放,建议把AudioPlayer设为窗体成员变量,不要在这里直接释放 // AudioPlayer.Free; end; end;
四、必要的权限配置(iOS 10+)
从iOS 10开始,应用访问媒体资源需要在Info.plist中添加权限描述,否则可能会被系统禁止播放:
- 打开
Project | Options,切换到Version Info选项卡 - 选择
iOS平台,点击Add按钮,添加以下键值对:- 键:
NSAudioUsageDescription - 值:
需要播放音频内容(可以根据你的应用用途自定义描述)
- 键:
五、额外注意事项
- 文件名大小写:iOS是区分大小写的文件系统,代码里的文件名必须和部署的
Remote Name完全一致 - 文件格式兼容性:确保你的MP3文件是iOS支持的编码格式(比如MPEG-1 Layer 3,比特率建议在8-320kbps之间)
- 后台播放(可选):如果需要后台播放音频,还要在
Project | Options的Application选项卡中,勾选Background Modes里的Audio, AirPlay, and Picture in Picture选项,同时在代码中设置AudioPlayer.MediaPlayer.SetCategory(TCategory.Playback);(需要引用FMX.Media.iOS)
内容的提问来源于stack exchange,提问作者Al C
相关产品推荐
相关产品推荐

