在用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);
varResName: string;ResStream: TResourceStream;
begin// 如果不需要覆盖,而且已经存在,则直接退出if FileExists(ReleaseFile) thenif not isOverride thenExit;// 资源文件名称ResName := ResFileName;// 如果资源文件不存在,则直接退出if FindResource(HInstance, PChar(ResName), RT_RCDATA) = 0 thenExit;// 释放资源文件ResStream := TResourceStream.Create(HInstance, ResName, RT_RCDATA);tryResStream.SaveToFile(ReleaseFile);finallyResStream.Free;end;
end;

第四步:引入 uAudioManager.pas 单元文件

该文件是播放声音的基础单元,属于 Delphi 官方出品!

usesSystem.IOUtils,  //这个单元也需要uAudioManager,   //引入该单元

第五步:释放程序的中资源文件到本地目录中,同时添加到播放目录

  //1. 释放声音资源G_AudioM := TAudioManager.Create;AddSound('OCRSound_wav','OCRSound.wav');      //OCR 识别成功声音: 0AddSound('Shutter_wav','ShutterSound.wav');   //快门声音: 1AddSound('KeySound_wav','KeySound.wav');      //按键声音: 2AddSound('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文件)

有技术问题或者无法下载联系:

【Delphi】让APP“鸡鸣鸟叫”(同时支持ios\android\windows\macos)相关推荐

  1. android浏览器 icloud,iCloud.com现在支持iOS/Android原生浏览器了

    原标题:iCloud.com现在支持iOS/Android原生浏览器了 日前,苹果为其 iCloud.com 网站进行更新,现已适用于 iOS 和 Android 移动浏览器.尽管苹果并没有对外宣布这 ...

  2. android支付宝插件,GitHub - DmcSDK/cordova.plugin.alipay: cordova 支付宝支付插件,支持IOS Android。...

    cordova.plugin.alipay cordova 支付宝支付插件 cordova plugin add https://github.com/DmcSDK/cordova.plugin.al ...

  3. 高仿书旗小说 Flutter版,支持iOS、Android

    高仿书旗小说 Flutter版,支持iOS/Android Github地址 github.com/huanxsd/flu- screen shot for iOS screen shot for A ...

  4. js获取微信状态栏高度_人人商城打包app教程 方法 hbuilder打包支持支付宝微信原生支付...

    使用hbuilder打包人人商城app 方法支持微信支付宝原生支付 介绍 人人商城打包使用hbuilder打包app需要的文件,目前支持微信原生支付,支付宝原生支付,原生退出app ,还没有写分享和原 ...

  5. 《移动App测试的22条军规》—App测试综合案例分析23.7节测试微信App对于操作系统特性的支持程度...

    本节书摘来自异步社区<移动App测试的22条军规>一书中的App测试综合案例分析,第23.7节测试微信App对于操作系统特性的支持程度,作者黄勇,更多章节内容可以访问云栖社区"异 ...

  6. Flutter 淘宝 App,支持 iOS、Android

    GZXTaoBaoAppFlutter 项目地址:GanZhiXiong/GZXTaoBaoAppFlutter  简介:Flutter 淘宝 App,支持 iOS.Android 更多:作者   提 ...

  7. Html5+APICloud插件支持IOS和安卓原生APP开发

    支持IOS和Android的真机或模拟机调试,发布调试版本,发布应用安装包等,即使只会前端的人员也可以做出一个像模像样的APP应用. 插件下载地址:http://www.apicloud.com/de ...

  8. 好用app开屏广告组件XHLaunchAd -支持静态/动态图片广告/mp4视频广告

    特性: 1.支持静态/动态图片广告. 2.支持mp4视频广告. 3.支持全屏/半屏广告. 4.支持网络及本地资源. 5.兼容iPhone和iPad. 6.支持广告点击事件. 7.支持自定义跳过按钮,添 ...

  9. linux镜像文件太大不好下载_这是什么神仙系统?支持安卓程序 + Windows 程序 + Linux 程序...

    说到操作系统相信大家都很熟悉 Windows.Linux.安卓.macOS 但是很多人都忽略了谷歌出品的 Chrome OS 系统,因为谷歌服务在国内需要 404 工具才能使用,导致这个系统关注度不高 ...

最新文章

  1. 查询表中的所有字段名
  2. SAP 会计凭证和物料凭证的关系
  3. 使用Atomikos Transactions Essentials实现多数据源JTA分布式事务--转载
  4. OPA 7 - opaTest
  5. eclipse没有server怎么办
  6. DPDK | 如何在用户空间使用大页内存hugepage
  7. Json对象直接存取数据库
  8. 【软考】软件设计师知识点整理(待更新)
  9. 威纶通触摸屏与仪表通讯_详解通信威纶通触摸屏与英威腾变频器的使用
  10. 模糊聚类及matlab实现,模糊聚类分析及matlab程序实现
  11. Raft 为什么是更易理解的分布式一致性算法
  12. 中国有句俗语叫“三天打鱼两天晒网”。某人从1990年1月1日起开始“三天打鱼两天晒网”, 问这个人在以后的某一天中是“打鱼”还是“晒网”?(考虑中间有几个闰年)
  13. Ubuntu18.04+TITAN XP+anaconda+cuda10+cudnn+pytorch
  14. 接口常见安全漏洞说明
  15. 使用联想智能引擎的电脑,将会懂你的心思
  16. Node 10.0+ 初级入门-姜威-专题视频课程
  17. windows开源会有linux吗,微软真的要开源Windows?小伙伴惊呆了!
  18. TensorFlow系列专题(二):机器学习基础
  19. Docker安装Oracle_11g的方法
  20. 恢弘志士之气,不宜妄自菲薄

热门文章

  1. vue-cli4+vue2兼容安卓7(h5嵌入app),一步步排查发现问题并且解决(vue白屏)
  2. run php helper,PHP异步进程助手async-helper
  3. No module named pymssql
  4. php ajax xmlhttpreq 上传文件 get,使用jQuery Ajax异步上传文件方法总结
  5. php日期和时间函数,使用PHP中的日期和时间函数
  6. php detime,php读取 mssql数据datatime时间字段的问题
  7. 2020-09-14
  8. 真实熵(the actual entropy)
  9. 室内热环境自动控制方法综述
  10. 九小时九个人九扇门 题解