您好、欢迎来到现金彩票网!
当前位置:21点 > 子例程 >

使收到的电子邮件播放定制声音

发布时间:2019-07-18 08:35 来源:未知 编辑:admin

  developerWorks 中国 正在向 IBM Developer 过渡。 我们将为您呈现一个全新的界面和更新的主题领域,并一如既往地提供您希望获得的精彩内容。

  长时间以来,开发人员在收到邮件的可视化通知方面做了很多改进。今天,我们可以看到各式各样的通知方式,从改变颜色或形状的简单图标到弹出式通知再到滑动式窗口中的详细摘要。但开发人员没有花费太多精力研究使声音通知提供更多意义,从而超越只使用录制的 AOL 声音输出来表示 “您收到一封电子邮件”。在开放源码领域中,最好的期望就是您的计算机可以根据帐户或电子邮件存储的位置播放不同的声音文件。

  这篇文章向您展示了如何根据收到的电子邮件的内容创建和播放定制声音文件。将使用 SoX(声音处理程序中的佼佼者)以及简单的关键字匹配,创建可以在收到电子邮件时播放的定制声音文件。不再是仅播放ding这样简单的声音来表示您收到了邮件,而不管它的收件人和发件人以及主题是什么。现在您可以听到ding-bang-whoosh表示电子邮件来自您的经理,或者bell-squawk-chirp表示您的银行对帐单可以使用了。

  本文中涉及的内容部分是在处理器为 Intel Pentium 4,内存为 256 MB 的机器上开发的。如果您运行的是 Linux 系统,那么至少需要 Pentium I 处理器以及 64 MB 内存。如果您打算在 Win32 上使用 SoX ,那么通常需要增加处理能力,如本文所演示。每个通知要处理的声音采样越多,硬件的处理能力就应该越强,这样才能减少合成提醒声音所用的时间。Pentium II 或更新的 CPU 应该能满足大部分情况。

  计算并构建关于新邮件的信息性声音效果的方法建立在三个组件的基础之上。为了在最短的时间内提供最多的信息并且避免受到其他声音的干扰,使用一种简单的时间划分方法。声音文件的选择要求将单个文件的峰值声音持续时间分为短、中、长三种。这个相对主观的术语产生了声音选择库,包含即时声音输出、声音逐渐升高并下降以及第三组渐增的声音。根据和电子邮件内容有关的各种输出参数,组合这些文件来生成涵义丰富的声音。参见参考资料,可找到这些声音的示例。

  emailMixer.pl 程序根据所匹配的关键字的位置,为您希望混合的声音文件读取指定的配置文件(默认情况下是fig)。考虑下面的例子:

  注意如果您希望搜索消息的标题,需要指定准确的标题名称。例如,“from” 或 “From: ” 都没有精确地匹配标题 “From:”,前者是因为少了一个冒号,后者则是因为多了一个空格。

  在开始处理声音文件之前,下载并安装 SoX。它提供了构建、处理和混合声音文件需要的所有工具,这些声音文件是构建涵义丰富的电子邮件通知所必需的(参见参考资料)。在大多数新版 Linux 发行中,应该已经安装了 SoX。在 Win32 环境中,下载并解压缩这个二进制文件,然后将其放到 emailMixer.pl 程序和声音效果所在的同一个目录。

  注意 SoX 命令结尾的 “polyphase” 选项,在改变文件采样率时该选项对于保存文件的基调非常重要。如果删除该选项,将根据选择的输出采样率增加或减少输出采样的基调。使用 SoX 创建了改进后的文件后,使用mv downSample_space2.wav space2.wav将它重命名为期望的文件名。确保对计划包含到 emailMixer.config 文件中的所有声音文件实施了此过程。

  现在准备好了开发环境,选择了声音效果并进行了预处理,配置了您需要的 Perl 模块,下面看一下 emailMixer.pl 程序。

  如果要在 Win32 环境中运行这个程序,确保对Win32::Sound行进行反注释。同时注意文件末尾的声音播放代码行,还需要将它进行反注释才可以在 Win32 机器上播放声音。当然还需要更新帐户名称和密码,注意这些代码和环境描述均为使用 Gmail 帐户处理邮件。这里的代码不是特定的,您可以用于任何 POP3 邮箱。

  当程序运行时,emailMixer.config 文件将包含指定要搜索的片段、关键字和声音效果。readKeyWordFile子例程构建了 emailMixer.config 文件内容的简单哈希表,以便后面进行搜索。请注意,以#开头的行都是注释行。

  使用 Mail::POP3Client,该子例程将从 Gmail POP 收件箱下载所有新消息。出于本文示例的考虑,我们将只使用第一条消息的内容(如果它存在的话)。将标题和正文的内容存储到临时变量后,发出pop-Close()命令通知 Gmail 服务器已对邮件进行了检索。要使用不同程序设置检索或读取的状态,使用一个不同的程序,注释掉pop-Close()行,消息将驻留在收件箱内直到被删除。要了解更多环境设置选项以及将 emailMixer.pl 程序无缝集成到现有邮箱设置的方法,请参见 “环境配置” 一节。

  matchWords子例程包含两个参数:搜索位置和搜索的单词。如果搜索位置是典型消息中的其中一个标题,则需要将搜索msgString的字符串设置为标题的内容。否则,就必须对正文搜索指定的字符串。如果指定位置存在配置文件中指定要搜索的词,将向主程序返回1表示找到一个匹配字。

  读取初始化文件后,将检查是否存在新的电子邮件。如果查找到一个消息,程序将继续查找每个搜索位置,以查看是否存在指定词。如果查找到一个匹配,根据 emailMixer.config 中的配置定义的声音文件,添加组合得到的声音组。

  如果在整个消息中搜索到了任何一个与搜索条件匹配的词,则播放根据这些匹配词构建的声音。您可能希望修改这个行为,以包括您默认的通知声音并简单地叠加您的匹配声音文件。对于本文的例子,我认为提供一个额外的区别层将匹配和不匹配的声音文件完全地分隔开效果会更好一点。假设至少查找到了一个匹配,主程序将继续叠加匹配声音文件来构建一个单独的输出文件。例如,在上面的for my $sndFile ( @soundList )循环中,如果匹配指定的整个条件(IBM, developerWorks, nathan),循环内部发出的消息将如下所示。

  需要修改最终的命令以正确播放生成的声音文件。如果您的机器受到 Redmond 的影响,请确保选择了 Win32 playback 选项。

  现在您已了解程序的工作原理,下面将配置您的环境以便更有效地使用 emailMixer.pl 程序。

  一个简单的方法就是,将您的 Gmail 帐户配置为从 POP 客户机下载电子邮件后,对每封电子邮件进行存档。这样的话,每次运行 emailMixer.pl 程序,它就会下载所有的新消息,而 Gmail 将在 All Mail 视图下显示在线读取状态。您就可以完全跳过收件箱视图而只在 All Mail 视图下工作,这是因为 emailMixer.pl 程序对收件箱里面的消息进行了监视和处理。另一种方法是,为 Gmail 建立一个 POP-only 电子邮件帐户,Gmail 中的消息将自动从您的主帐户转发到 POP-only 帐户。对 POP-only 帐户进行配置,使得在通过 POP 访问完邮件之后自动将其删除。这将使您能够以标准的方式在主帐户中使用收件箱并使用 emailMixer.pl 程序查看 POP-only 帐户中的电子邮件。

  如果想要从 Gmail 下载电子邮件并在本地工作,考虑在将pop-close注释掉之后运行 emailMixer.pl。这将告诉服务器没有完全下载消息,这将允许您使用 Thunderbird 之类的标准消息检索程序完整地下载该消息。

  作为一个端到端的示例,假设您开始从事一项和本地一所大学有关的新工作。您希望从 .edu 地址收到的所有电子邮件消息都伴有一个持续时间较长的具体声音,如果电子邮件与 “account” 有关并且地址为 “Nathan”,则最好还伴有持续时间较短和持续时间中等的声音。使用以下 emailMixer.config 文件:

  当然,这里提供的声音文件和配置示例只是起点而已。您可以使用自己的声音文件和配置来实现比本文示例更优秀的应用。

http://korinkorin.com/zilicheng/199.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有