【天堂论坛】玩机到天堂 买机找海洋微软 WM系统……智领商务.创新未来 → [转贴]解决改MP3铃声支持后短信提示方式无法跟随情景模式变化的方法
查看完整版本:[转贴]解决改MP3铃声支持后短信提示方式无法跟随情景模式变化的方法
2006/7/26 11:36:33
解决改MP3铃声支持后短信提示方式无法跟随情景模式变化的方法

声明,修改注册表和手机上的系统文件之前请务必要备份!!!!!!切记!!!!!!仅代表我的手机环境(smartphone 2003 se,增加mp3铃声支持),请大家谨慎




用了一个月的smartphone 2003,感觉很好,可问题也发现了不少.最令我不爽的就是短信通知方式无法调成震动+响铃.(不过后来我想了想,觉得这有可能是使用了"wma,mp3铃声支持"软件的原因,请见后面分析.也请没有添加mp3铃声支持的同志证实一下,是不是不存在这个问题.我自己是懒得再改了.)

摆弄了几天我的568,发现短信通知方式不能调成震动+响铃,后来发了个帖子,又搜索了一下,找到了一个解决方法:

HKEY_CURRENT_USER\Controlpanel\Sounds\SMS

下新建一个字符串值,Value name:script Value data:av0p
这样就可以震动+响铃了,可是并不完美,因为它不能跟随情景模式变化,而是永远震动+响铃.(静音模式会自动把振铃音量调成0了,所以虽然这种模式下他还是震动+响铃,可是响铃的声音是0)

不甘心,继续在注册表里摸索,未果...可是无意中在\Storage\Application Data\Profiles目录下发现了几个文件.Loud.prof.xml  Meeting.prof.xml  Normal.prof.xml  Silent.prof.xml,兴奋不已,因为一看这就是情景模式中的"室外,会议,普通,静音"...把这几个文件拷贝到电脑,打开Normal.prof.xml.

<DIV class=smalltxt style="FONT-WEIGHT: bold; MARGIN-LEFT: 2em; MARGIN-RIGHT: 2em"><DIV style="FLOAT: left">CODE:</DIV><DIV style="FLOAT: right; TEXT-ALIGN: right">[Copy to clipboard]</DIV></DIV><DIV class=altbg2 id=code0 style="CLEAR: both; BORDER-RIGHT: #698cc3 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #698cc3 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; MARGIN: 3px 2em 2em; BORDER-LEFT: #698cc3 1px solid; WORD-BREAK: break-all; PADDING-TOP: 5px; BORDER-BOTTOM: #698cc3 1px solid"><characteristic type="Normal"><characteristic type="Registry">
                <characteristic type="HKCU\ControlPanel\Profiles\Normal">
                        <parm name="Name" value="普通"/>
                </characteristic>
        </characteristic>
        <characteristic type="Sounds">
                <parm name="RingTypeAll" value="apw3r"/>
        </characteristic>
        <characteristic type="Registry">
                <characteristic type="HKCU\ControlPanel\SoundCategories">
                        <characteristic type="Ring">
                                <parm name="InitVol" value="5"/>
                        </characteristic>
                        <characteristic type="Alarm">
                                <parm name="Script" value="pw10pw10c110pw10c110pw30c110pw30c110pw30c110pw120c110pw300c110p"/>
                                <parm name="InitVol" value="5"/>
                        </characteristic>
                        <characteristic type="Notification">
                                <parm name="Script" value="p"/>
                                <parm name="InitVol" value="5"/>
                        </characteristic>
                </characteristic>
        </characteristic>
        <characteristic type="Sounds">
                <characteristic type="System">
                        <parm name="InitVol" value="5"/>
                </characteristic>
        </characteristic>
</characteristic></DIV>看的出来,这是修改注册表的脚本.研究了半天,试验了几十次,浪费了几十条短信.发现只要在最后一个</characteristic>之前添加

<DIV class=smalltxt style="FONT-WEIGHT: bold; MARGIN-LEFT: 2em; MARGIN-RIGHT: 2em"><DIV style="FLOAT: left">CODE:</DIV><DIV style="FLOAT: right; TEXT-ALIGN: right">[Copy to clipboard]</DIV></DIV><DIV class=altbg2 id=code1 style="CLEAR: both; BORDER-RIGHT: #698cc3 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #698cc3 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; MARGIN: 3px 2em 2em; BORDER-LEFT: #698cc3 1px solid; WORD-BREAK: break-all; PADDING-TOP: 5px; BORDER-BOTTOM: #698cc3 1px solid">        <characteristic type="Registry">
                <characteristic type="HKCU\ControlPanel\Sounds\SMS">
                        <parm name="Script" value="p"/>
                </characteristic>
        </characteristic></DIV>

然后拷回到手机的原目录下,并覆盖原文件,再切换到普通模式一遍,现在就可以在普通模式下实现短信通知只响铃了.

这里的重点是<parm name="Script" value="p"/>      打个比方,Script的value取av0pw3r,
a:没试出来什么作用,有没有a好像没有分别.
v:表示震动,后面可以跟数字,表示震动时间长短(不过好像后面有p的时候v后面的数字就不管用了)
p:表示播放声音
w:表示铃声播放完一遍以后停顿,后面跟数字表示停顿时间长短.
r:循环前面的脚本

av0pw3r的意思就是震动的同是响铃,铃声响完一遍后停顿三秒,循环.

这样,再修改Loud.prof.xml,添加上面同样的代码,不同的是把<parm name="Script" value="p"/>改成<parm name="Script" value="v0p"/>,这样在室外模式下,短信提示就是震动+响铃..

再修改Silent.prof.xml ,也是添加同样的代码,不同的是把<parm name="Script" value="p"/>改成<parm name="Script" value="v2"/>,这样在静音模式下,就可以只震动了,2表示震动两秒.

分析:

其实第一种方法就指出了,控制短信通知方式的就是HKEY_CURRENT_USER\Controlpanel\Sounds\SMS 下Script的值.

而Normal.prof.xml那几个文件,就是通过修改注册表来达到改变系统环境设定的目的.以Normal.prof.xml为例来分析吧.
先看这一段

<DIV class=smalltxt style="FONT-WEIGHT: bold; MARGIN-LEFT: 2em; MARGIN-RIGHT: 2em"><DIV style="FLOAT: left">CODE:</DIV><DIV style="FLOAT: right; TEXT-ALIGN: right">[Copy to clipboard]</DIV></DIV><DIV class=altbg2 id=code2 style="CLEAR: both; BORDER-RIGHT: #698cc3 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #698cc3 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; MARGIN: 3px 2em 2em; BORDER-LEFT: #698cc3 1px solid; WORD-BREAK: break-all; PADDING-TOP: 5px; BORDER-BOTTOM: #698cc3 1px solid"><characteristic type="Normal"><characteristic type="Registry">
                <characteristic type="HKCU\ControlPanel\Profiles\Normal">
                        <parm name="Name" value="普通"/>
                </characteristic>
        </characteristic>
        <characteristic type="Sounds">
                <parm name="RingTypeAll" value="apw3r"/>
        </characteristic></DIV>

头五行,表示这个脚本对应的是普通模式.
后三行,表示把类型(Category)为Ring的所有事件(注:HKEY_CURRENT_USER\Controlpanel\Sounds\下有很多不同的项,代表不同的事件,比如Ringtone0表示线路1来电,Shutdown表示关机,在这些项下都有一个Category的值,比如Ringtone0的Category就是Ring,而Shutdown的Category就是System)都修改成apw3r(含义见第一帖).


再看下面一段

<DIV class=smalltxt style="FONT-WEIGHT: bold; MARGIN-LEFT: 2em; MARGIN-RIGHT: 2em"><DIV style="FLOAT: left">CODE:</DIV><DIV style="FLOAT: right; TEXT-ALIGN: right">[Copy to clipboard]</DIV></DIV><DIV class=altbg2 id=code3 style="CLEAR: both; BORDER-RIGHT: #698cc3 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #698cc3 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; MARGIN: 3px 2em 2em; BORDER-LEFT: #698cc3 1px solid; WORD-BREAK: break-all; PADDING-TOP: 5px; BORDER-BOTTOM: #698cc3 1px solid">        <characteristic type="Registry">
                <characteristic type="HKCU\ControlPanel\SoundCategories">
                        <characteristic type="Ring">
                                <parm name="InitVol" value="5"/>
                        </characteristic>
                        <characteristic type="Alarm">
                                <parm name="Script" value="pw10pw10c110pw10c110pw30c110pw30c110pw30c110pw120c110pw300c110p"/>
                                <parm name="InitVol" value="5"/>
                        </characteristic>
                        <characteristic type="Notification">
                                <parm name="Script" value="p"/>
                                <parm name="InitVol" value="5"/>
                        </characteristic>
                </characteristic>
        </characteristic></DIV>

前五行表示把Category为Ring的音量调整到5,接着的几行是调整Alarm类的设定,最后,是针对Notification的设定,把类型为Notification的事件修改成p,(问题在这里出现了.本身SMS的类型应该是Notification,但好像是使用了轻松炫一类的软件后,SMS的类型就变成Ring了.这样,可以推测出原本短信提示是可以跟着环境模式改变的,因为这里设定了Notification类型的事件为p,只是添加了mp3铃声支持后SMS的类型不是Notification了,所以不会自动更改了,懒得去试了,请没有使用这类软件修改系统的通知帮忙证实一下).

看到这里,就不用再往下看了,一切都了然了...可如何解决这问题呢??把SMS的类从新修改成Notification??这样短信铃声就不能支持mp3了.....

对比了这个脚本文件的上上下下,模仿着他的内容在后面加了一段(注意,是在最后一行之前)

<DIV class=smalltxt style="FONT-WEIGHT: bold; MARGIN-LEFT: 2em; MARGIN-RIGHT: 2em"><DIV style="FLOAT: left">CODE:</DIV><DIV style="FLOAT: right; TEXT-ALIGN: right">[Copy to clipboard]</DIV></DIV><DIV class=altbg2 id=code4 style="CLEAR: both; BORDER-RIGHT: #698cc3 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #698cc3 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; MARGIN: 3px 2em 2em; BORDER-LEFT: #698cc3 1px solid; WORD-BREAK: break-all; PADDING-TOP: 5px; BORDER-BOTTOM: #698cc3 1px solid">        <characteristic type="Registry">
                <characteristic type="HKCU\ControlPanel\Sounds\SMS">
                        <parm name="Script" value="p"/>
                </characteristic>
        </characteristic></DIV>

意义是把HKCU\ControlPanel\Sounds\SMS 下 Script的值改成P..
这样,普通模式下的修改就完成了.别忘了把修改过的文件覆盖到原目录下.

其他几种模式类似,可以根据自己的需要定制...只要掌握好Script的值的意义,那就可以随心所欲的定制自己喜欢的提示效果.Scripts的取值意义见第一帖.同时也希望同志们帮忙测试出"a"代表的意义...

Powered by BBSXP 2007 ACCESS © 1998-2024
Processed in 0.02 second(s)