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


    在用Delphi开发FMX程序的时候,有时我们需要程序能够发出提示声,例如:当用户读卡成功的时候发出一声清脆的鸟叫声,提示读卡成功;当用户切换页面的时候发出一声柔和的翻书声,提示用户,当程序处于非活动状态的时候提示用户一声程序已经失活等等。总之,让FMX开发的APP能够随愿所控的发出我们期望的提示声(或者音乐)是一个需求。本文介绍一种同时支持FMX的四种平台(iOS、Android、Windows、macos)声音控制方法。

    第一步:准备好音频资源文件,需要 .wav 文件(一个一个的音频文件,根据需要提供);

    第二步:引入基础音频发声控制( uAudioManager.pas)单元;

    第三步:初始化音频资源,就是把第一步准备的资源文件初始化好,然后就可以在程序中任意使用;

    提示以下演示步骤是在 Delphi 11.1 环境下,其它版本类似

    一、准备音频资源文件:

            我在本文中准备了4种音频文件,分别是:

    序号音频文件说明
    0OCRSound.wav读卡成功声音,索引:0
    1ShutterSound.wav快门声音,索引:1
    2KeySound.wav键盘按键声音,索引:1
    3BirdSound.wav页面切换声音(鸟叫),索引:2

    为了方便,四个音频文件都在原程序中的目录\Sound下。

    二、新建一个delphi的演示工程文件,选择空程序,命名为:Delphi_Sound.dpr

    第一步:创建空白新工程文件

     第二步:将音频文件添加到程序资源中,选择 Project -> Resources and Images 菜单

    选择【Add...】按键

    切记右下角文件类型选择 Any file(*),否则看不到音频文件

    逐个文件加入到程序的资源中。注意将资源标识更改成文件名,中间的.替换成下划线,因为资源标识中不允许出现小点。

     至此,资源文件已经添加到了程序中,以后程序中将会始终包含这四个文件。

     第三步:添加程序释放资源函数

    在程序的主窗体中增加释放资源的函数:ReleaseFile_FromResource

    1. procedure TForm1.ReleaseFile_FromResource(ResFileName, ReleaseFile: string;
    2. isOverride: Boolean);
    3. var
    4. ResName: string;
    5. ResStream: TResourceStream;
    6. begin
    7. // 如果不需要覆盖,而且已经存在,则直接退出
    8. if FileExists(ReleaseFile) then
    9. if not isOverride then
    10. Exit;
    11. // 资源文件名称
    12. ResName := ResFileName;
    13. // 如果资源文件不存在,则直接退出
    14. if FindResource(HInstance, PChar(ResName), RT_RCDATA) = 0 then
    15. Exit;
    16. // 释放资源文件
    17. ResStream := TResourceStream.Create(HInstance, ResName, RT_RCDATA);
    18. try
    19. ResStream.SaveToFile(ReleaseFile);
    20. finally
    21. ResStream.Free;
    22. end;
    23. end;

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

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

    1. uses
    2. System.IOUtils, //这个单元也需要
    3. uAudioManager, //引入该单元

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

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

     

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

     

     

  • 相关阅读:
    布隆过滤器 python3 pybloom_live使用例子 存储开销
    【3D 图像分割】基于 Pytorch 的 VNet 3D 图像分割6(数据预处理)
    Vue入门
    OpenCV-3.4.1+VTK7.1.1+PCL1.8.1编译安装教程(Ubuntu16.04,Ubuntu18.04系统,ARM/X86架构都适用)
    虹科分享 | IOTA网络性能监控 | 如何有效分析VoIP问题
    软件测试( 基础篇)
    正则表达式的学习笔记
    Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡
    如何提升网站排名优化(百度SEO优化,轻松提升排名)
    Unigram,Bigram,N-gram介绍
  • 原文地址:https://blog.csdn.net/sensor_WU/article/details/125631605