在用Delphi开发FMX程序的时候,有时我们需要程序能够发出提示声,例如:当用户读卡成功的时候发出一声清脆的鸟叫声,提示读卡成功;当用户切换页面的时候发出一声柔和的翻书声,提示用户,当程序处于非活动状态的时候提示用户一声程序已经失活等等。总之,让FMX开发的APP能够随愿所控的发出我们期望的提示声(或者音乐)是一个需求。本文介绍一种同时支持FMX的四种平台(iOS、Android、Windows、macos)声音控制方法。
第一步:准备好音频资源文件,需要 .wav 文件(一个一个的音频文件,根据需要提供);
第二步:引入基础音频发声控制( uAudioManager.pas)单元;
第三步:初始化音频资源,就是把第一步准备的资源文件初始化好,然后就可以在程序中任意使用;
提示以下演示步骤是在 Delphi 11.1 环境下,其它版本类似!
一、准备音频资源文件:
我在本文中准备了4种音频文件,分别是:
序号 | 音频文件 | 说明 |
0 | OCRSound.wav | 读卡成功声音,索引:0 |
1 | ShutterSound.wav | 快门声音,索引:1 |
2 | KeySound.wav | 键盘按键声音,索引:1 |
3 | BirdSound.wav | 页面切换声音(鸟叫),索引:2 |
为了方便,四个音频文件都在原程序中的目录\Sound下。
二、新建一个delphi的演示工程文件,选择空程序,命名为:Delphi_Sound.dpr
第一步:创建空白新工程文件
第二步:将音频文件添加到程序资源中,选择 Project -> Resources and Images 菜单
选择【Add...】按键
切记右下角文件类型选择 Any file(*),否则看不到音频文件
逐个文件加入到程序的资源中。注意将资源标识更改成文件名,中间的.替换成下划线,因为资源标识中不允许出现小点。
至此,资源文件已经添加到了程序中,以后程序中将会始终包含这四个文件。
第三步:添加程序释放资源函数
在程序的主窗体中增加释放资源的函数:ReleaseFile_FromResource
- procedure TForm1.ReleaseFile_FromResource(ResFileName, ReleaseFile: string;
- isOverride: Boolean);
- var
- ResName: string;
- ResStream: TResourceStream;
- begin
- // 如果不需要覆盖,而且已经存在,则直接退出
- if FileExists(ReleaseFile) then
- if not isOverride then
- Exit;
- // 资源文件名称
- ResName := ResFileName;
- // 如果资源文件不存在,则直接退出
- if FindResource(HInstance, PChar(ResName), RT_RCDATA) = 0 then
- Exit;
-
- // 释放资源文件
- ResStream := TResourceStream.Create(HInstance, ResName, RT_RCDATA);
- try
- ResStream.SaveToFile(ReleaseFile);
- finally
- ResStream.Free;
- end;
- end;
第四步:引入 uAudioManager.pas 单元文件
该文件是播放声音的基础单元,属于 Delphi 官方出品!
- uses
- System.IOUtils, //这个单元也需要
- uAudioManager, //引入该单元
第五步:释放程序的中资源文件到本地目录中,同时添加到播放目录
- //1. 释放声音资源
- G_AudioM := TAudioManager.Create;
- AddSound('OCRSound_wav','OCRSound.wav'); //OCR 识别成功声音: 0
- AddSound('Shutter_wav','ShutterSound.wav'); //快门声音: 1
- AddSound('KeySound_wav','KeySound.wav'); //按键声音: 2
- AddSound('BirdSound_wav','BirdSound.wav'); //鸟叫声音-切换界面: 3
第六步:分别选择不同的平台编译(Windows、Android、IOS、MACOS)。
总结:
1. 需要使用uAudioManager.pas单元。这个单元中定义了TAudioManager对象;
2. 增加声音资源文件:TAudioManager.AddSound(FileName);
3. 播放声音,可以根据索引号,也可以根据文件名称:TAudioManager.PlaySound(索引号或者文件名)
4. 关于资源文件,可以在 Project -> Resources and Images 菜单中增加,也可以在 Project -> Deployment 菜单中增加,区别是,前者只是简单的将资源包含在可执行文件中,后者不但包含在可执行文件中,同时会在执行时释放在对应的目录中;另外前者对于所有平台都可以,后者对于Windows程序的Normal方式不起作用,只有在Application Store模式下有效,当前大家使用的基本上都是Normal方式,所以本文选择了前者。实际上根据情况可以选择不同的资源加载方式。
下载:
1. 源文件(包含声音资源文件)下载(需要5分,无积分可联系作者发给你);
2. 执行程序下载(包含windows EXE文件和Android 的APK文件)
有技术问题或者无法下载联系: