WinCE系统声音定制
作者:ARM-WinCE
2010的第一篇Blog,介绍一下WinCE系统声音的定制。说白了,就是设置注册表。WinCE系统启动的开机音乐,点击触摸屏以及键盘输入的按键音,还有系统运行过程中的各种声音其实都是在注册表里面预先设置好的。这里做个简单介绍:
整个WinCE系统声音注册表设置如下:
[HKEY_CURRENT_USER/ControlPanel/Volume]
"Key"=dword:10002
"Screen"=dword:10002
"Mute"=dword:7
"Volume"=dword:99999999
[HKEY_LOCAL_MACHINE/Snd/Scheme]
".DefaultSounds"=mui_sz:"cplmain.cpl,#33123"
".AllSounds"=mui_sz:"cplmain.cpl,#33124"
".NoSounds"=mui_sz:"cplmain.cpl,#33127"
[HKEY_LOCAL_MACHINE/Snd/Event]
".Scheme"=".DefaultSounds"
"EventMask"=dword:FFFFFF
"EventCache"=dword:300
; Schemedescriptions
".NoSounds"=multi_sz:"","","","","","","","","","","","","","","","","","","","",""
".DefaultSounds"=multi_sz:"Asterisk","","critical","default","","exclam",
"infbeg","infend","infintr","","","","question",
"Infbeg","Infend","Infintr","startup","","","",""
".AllSounds"=multi_sz:"Asterisk","Close","critical","default","Empty","exclam",
"infbeg","infend","infintr","MenuPop","MenuSel","OpenProg","question",
"Infbeg","Infend","Infintr","startup","WindMax","WindMin","RecStart","RecEnd"
这些是默认设置,下面分别介绍一下:
1. 音量设置
[HKEY_CURRENT_USER/ControlPanel/Volume]
"Key"=dword:10002
"Screen"=dword:10002
"Mute"=dword:7
"Volume"=dword:99999999
Volume:是设置默认的系统音量的,0为最小,也就是没声音了;0xFFFFFFFF为最大音量
Mute:用来设置Mute类型,0位表示Notifications,1位表示Apps,2位表示Events。默认情况为0x7,也就是全部打开,如果为0,则表示完全Mute。
Screen:表示点击触摸屏的声音音量,从0x1到0x10002表示从最小到最大。
Key:表示按键输入的声音音量,从0x1到0x10002表示从最小到最大。
上面的这些设置在WinCE系统启动后,可以在”Control Panel”->”Volume&Sounds”中看到。
2. 系统声音的策略
[HKEY_LOCAL_MACHINE/Snd/Scheme]
".DefaultSounds"=mui_sz:"cplmain.cpl,#33123"
".AllSounds"=mui_sz:"cplmain.cpl,#33124"
".NoSounds"=mui_sz:"cplmain.cpl,#33127"
这里包含了所有的声音策略,有默认使用的声音策略,打开所有声音的策略和关闭所有声音的策略。如果用户想包含并使用自己声音策略,要先在这里声明。
每一种声音策略都对应到cplmain.cpl中的数字,这个定义可以在/WINCE600/PUBLIC/WCESHELLFE/OAK/CTLPNL/CPLMAIN/cplres.h中找到,如下:
#defineIDS_LOC_DEFAULTSOUNDS (REBASE+0x163) 对应#33123
#defineIDS_LOC_ALLSOUNDS (REBASE+0x164) 对应#33124
#defineIDS_LOC_NOSOUNDS (REBASE+0x167) 对应#33127
同样如果用户想定义自己的声音策略,也可以在这里面添加定义。具体的不说了,下面还会提到。
3. 声音策略的定义
[HKEY_LOCAL_MACHINE/Snd/Event]
".Scheme"=".DefaultSounds"
"EventMask"=dword:FFFFFF
"EventCache"=dword:300
; Schemedescriptions
".NoSounds"=multi_sz:"","","","","","","","","","","","","","","","","","","","",""
".DefaultSounds"=multi_sz:"Asterisk","","critical","default","","exclam",
"infbeg","infend","infintr","","","","question",
"Infbeg","Infend","Infintr","startup","","","",""
".AllSounds"=multi_sz:"Asterisk","Close","critical","default","Empty","exclam",
"infbeg","infend","infintr","MenuPop","MenuSel","OpenProg","question",
"Infbeg","Infend","Infintr","startup","WindMax","WindMin","RecStart","RecEnd"
这里定义了使用哪个声音策略,以及事件的屏蔽,还有声音策略的定义。
.Scheme:定义系统使用的声音策略。
EventMask:定义是否隐藏某些声音的事件,总共21个事件,可以选择性的隐藏某个事件,默认情况下,所有的事件都会在控制面板中的声音设置中看到。这里本来想传一张图片,结果发现csdn博客的图片上传功能暂时关闭了。多说两句,在控制面板中,找到声音设置,然后切换到Sounds窗口,在Event下面就可以看到所有的声音事件了。
实际上这些声音事件的定义在/WINCE600/public/wceshellfe/oak/ctlpnl/cplmain/sndschem.cpp中的一个数组idsSoundEvents[NUM_SOUND_EVENTS]中。
EventCache:设置Cache的大小,用于记录弹出窗口及窗口的切换动作。
.NoSounds:具体声音策略的定义
.DefaultSounds:具体声音策略的定义
.AllSounds:具体声音策略的定义
默认情况下,只是定义了这三种声音策略,每一种策略定义了针对21个声音事件分别采用什么样的声音。这里用户也可以添加自己的声音定制策略。所有的声音文件都是.wav文件,存放在/WINCE600/public/wceshellfe/oak/files目录下面。在创建WinCE工程病编译之后,这些.wav文件会被拷贝到编译工程的release目录下面,并被打包到WinCE的image中去。
4. 定制开机音乐
了解了上面的注册表,改变开机音乐就很简单了,对于WinCE系统中有21个声音事件,其中startup事件就是指开机音乐(可以从前面的.AllSounds声音策略定中看到),这个事件对应的是startup.wav文件。
所以最简单的方法就是把你的开机音乐文件命名为startup.wav,然后替换你WinCE工程编译后release目录下面的startup.wav文件,最后重新Makeimg一下,就可以了。
WinCE系统声音定制的更多相关文章
- WinCE系统深度定制汇总
WinCE应用程序崩溃提示框的处理 WinCE6.0多国语言软键盘 定制WinCE6.0标准界面的一种方法 如何禁用WinCE下的沙漏图标 Silent RNAApp.exe for WinCE6.0 ...
- 介绍一种很棒的wince 如何替换系统声音的方法
Topic:介绍一种很棒的wince 如何替换系统声音的方法(作者:Baiduluckyboy) //------------------------------------------------- ...
- WIN-CE系统架构
WIN-CE 系统架构分为素部分:硬件层.OEM 层.操作系统层.应用层 http://hovertree.com/hvtart/bjae/oy9pqb94.htm 硬件层: 由CPU .存储器.I/ ...
- IOS调用系统声音(键盘声音)
#import <AudioToolbox/AudioToolbox.h> AudioServicesPlaySystemSound(1106); 注:括号中为系统声音的id,详见 htt ...
- ios开发——实用技术篇Swift篇&系统声音
系统声音 // MARK: - 系统声音 /*----- 系统声音 ------*/ @IBAction func systemSound() { //建立的SystemSoundID对象 var s ...
- iOS调用系统声音与振动
如何调用系统声音?[iphone 调用系统铃声与震动功能] 首先要在工程里加入Audio Toolbox framework这个库,然后在需要调用的文件里#import <AudioToolbo ...
- iOS 之播放系统声音
导入框架: 代码: #import <UIKit/UIKit.h> #import <AudioToolbox/AudioToolbox.h> @interface MsgPl ...
- Swift - 系统声音服务的使用(播放声音,提醒,震动)
1,系统声音服务介绍: 系统声音服务提供了一个Api,用于播放不超过30秒的声音.它支持的文件格式有限,具体的说只有CAF.AIF和使用PCM或IMA/ADPCM数据的WAV文件. 但此函数没有提供操 ...
- iOS 接收新消息通知调用系统声音 震动
添加系统框架: #import <AudioToolbox/AudioToolbox.h> 调用震动代码: AudioServicesPlaySystemSound(kSystemSoun ...
随机推荐
- React Native实现一个自定义模块
概述 在 前期介绍React Native 项目结构的时候,我们讲解过React的项目组成,其中说过 node_modules 文件夹,这是一个存放 node 模块的地方.我们知道React是用npm ...
- 如何在苹果手机上安装自制的AD证书
写这篇博文的契机是有人已经实现了CRM在用自制证书部署IFD后,在手机安装上自制证书后即可登录官方移动端APP,因为之前很多人都尝试过只要是自制证书部署的IFD就无法使用官网手机APP,而本人实验下来 ...
- 实现一个最简单的VIM文本编辑器(可能有bug,随便写了一个)
简单的写了一个文本编辑器,功能很简单,但足以把文件IO相关的操作熟悉了,可能功能或者分配的大小还不够完善.请参考参考: #include <stdio.h> #include <co ...
- 同步图计算:GraphLite的安装和使用
http://blog.csdn.net/pipisorry/article/details/51350908 export HADOOP_HOME=/usr/local/hadoop-2.6.4ex ...
- 插件开发之360 DroidPlugin源码分析(一)初识
转载请注明出处:http://blog.csdn.net/hejjunlin/article/details/52123450 DroidPlugin的是什么? 一种新的插件机制,一种免安装的运行机制 ...
- MyBatis Generator For Eclipse 插件安装
由于在ORM框架MyBatis中,实现数据表于JavaBean映射时,配置的代码比较的复杂,所以为了加快开发的效率,MyBatis官方提供了一个Eclipse的插件, 我izuoyongjiushis ...
- 操作系统处理内存时内存页为4k
windows和unix处理内存时,一个内存页的大小都为4k. 测试代码 int main() { while (1) { int *p = (int *)malloc(1024); getchar( ...
- UNIX网络编程——客户/服务器程序设计示范(二)
TCP并发服务器程序,每个客户一个子进程 传统上并发服务器调用fork派生一个子进程来处理每个客户.这使得服务器能够同时为多个客户服务,每个进程一个客户.客户数目的唯一限制是操作系统对以其名义 ...
- Linux技巧:一次删除一百万个文件的最快方法
最初的测评 昨天,我看到一个非常有趣的删除一个目录下的海量文件的方法.这个方法来自http://www.quora.com/How-can-someone-rapidly-delete-400-000 ...
- SQL 2012 Always On 为 MSCRMSqlClrLogin SQL 登录名创建非对称密钥时报语法错误
根据实施手册中的下图的SQL在为MSCRMSqlClrLogin 创建非对称秘钥时报语法错误,具体的错误在就path那,调了多次还是报错,索性就把SQL拆开执行. 先执行这条 SELECT * FRO ...