爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 1098|回复: 17
收起左侧

[Flash修改] 以最少按键查找联系人(同一键字母模糊拼音首字母法)

[复制链接]
发表于 2006-6-8 22:54:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册会员 微信登录

x
在通讯录里写轮眼版flash默认输入法为abc,如果在联系人名前加上姓名的拼音首字母,这样在查找联系人时是非常方便的,可是大多数情况下按键次数还是很多。

例如,小布什(xiaobushi,阿拉不用bush,bullshit or bull-shit)以拼音首字母法写成:xbs.小布什,只需输入xbs三字母就可以定位到联系人小布什,但是由于手机键盘把26个字母分配在8个数字键上,所需按键次数为8次之多。

如果把同一键上的字母进行模糊,以第一个字母表示。对应关系:
ABC-A;DEF-D;GHI-G;JKL-J;MNO-M;PQR-P;STUV-T;WX-W;Y-+;Z-#;

(其中键7[PQRS]上的字母都可用作声母,键8[TUV]只有T可用作声母,所以把S对应到键8上,键9[WXYZ]上的字母用于姓名(王,杨,张)最多,为减少重复几率,所以把Y对应到0键,Z对应到#键)。

对照上面的对应关系写成:小布什-xbs(拼音首字母).小布什-wat(同一键字母模糊拼音首字母).小布什,按键次数只需3次(在abc输入法下按键928),输入时仍然用拼音按键方式,所以查找非常快捷。

上面提到的按键次数属于个体样本下的情况,实际的按键次数依赖于具体的通讯录,不同人的通讯录,按键次数略有出入。理论上,进行同一键字母模糊后姓名重复的几率增大,我的通讯录少于二百条记录,使用同一键字母模糊拼音首字母法出现的重复现象总体上与拼音首字母方法相当。下图是以不同方法表示的部分通讯录里定位某个联系人分别需要的按键次数对照表。比较可以看出,使用同一键字母模糊拼音首字母法要比拼音首字母法按键次数平均每条减少2.26个。原则上,前者的按键次数应该少于后者。

在目前为止,我想这个方案是小8里最快的。如果能够实现小8的拼音检索,再进行同一键字母模糊处理那就更完美了。

手机快刀手已经在他的西门子M55(http://bbs.zol.com.cn/new/TopicView.php?nId=31899&board_id=113&refresh=1)实现了姓名的拼音首字母检索,应该很容易用这种方法进行改进。
而在sl45上没有拼音检索(http://bible.younet.com/files/2003/07/26/50337.shtml)。一大遗憾,期待高手实现。


                               
登录/注册后可看大图


[ 本帖最后由 asdwsx 于 2006-6-9 00:44 编辑 ]
发表于 2006-6-8 23:21:34 | 显示全部楼层
这个开发要大力支持
回复 支持 反对

使用道具 举报

发表于 2006-6-8 23:30:18 | 显示全部楼层
看不懂 啊
回复 支持 反对

使用道具 举报

发表于 2006-6-8 23:34:28 | 显示全部楼层
西门子M55通讯录内部格式之彻底解剖(转)  
楼层:楼主 时间:2004-06-07 17:23:14  [气球] [加到网摘]   分数:20  
fade


[我的文章]

作者:手机快刀手 转贴自:http://www.younet.com

本人通过对M55通讯录的文件格式做详细的“解剖”,彻底分析出了通讯录的内部格式构成,这样我们就可以对通讯录进行优化了,比如减肥、拼音查询优化等等,这些都是用官方软件所无法办到的。
本文可以供西门子的爱好者参考,当然对懂得软件编程的开发人员来说,我想应该是目前国内首次公开的关于M55宝贵的技术资料了,不知西门子会不会找我算账……,^_^
本文是针对M55通讯录做的研究,但同样适合于西门子55系列的其他手机,如S57/SL55。

一、综述
M55的通讯录是由三个文件组成的,放在动态内存的Address book目录下,这个目录是隐藏的,所以通过手机的文件管理器是看不到的,但通过数据线借助电脑,用DES软件可以清楚的看到这个隐藏目录以及这个目录里的四个文件,也是隐藏的。
这个四个文件为别为5f08.adr, 7f08.adr, 9f08.adr和.lock文件,有别于45系列(6618/3618/6688)通讯录的5f02.adr, 7f02.adr, 9f02.adr,因为55系列(s57/sl55/m55)手机的通讯录作了许多改进和升级。
其中5f08.adr是用来存放每一条通讯录的具体内容的,按条逐次存放。我称之为记录文件。
7f08.adr里存放的是每一条通讯录在5f08.adr文件中的地址,便于检索。我称之为索引文件。
9f08.adr是由手机动态生成的,事实上备份通讯录只要拷贝前两个文件就可以了。
.lock文件固定为0字节,对于我们研究和改进通讯录没有什么关系,不用管它。

二、M55通讯薄记录文件格式(5f08.adr)
5f08.adr由文件头和其后的通讯录记录构成:
(一)、文件头: 68字节;
2字节:代表记录头中包含字段的数目,一般为29个字段,即总为1D 00;
2字节:代表记录(电话)条目个数,比如若通讯录中有18条记录,则位12 00;
剩余64字节总是:
00 00 00 00 01 00 13 01 93 01 13 01 93 02 13 01
13 01 13 08 93 00 9A 01 9A 01 0A 02 4A 00 A9 00
A9 00 A9 00 A9 00 A9 00 08 00 08 00 08 00 08 00
08 00 82 00 14 00 24 00 35 00 08 00 08 00 3A 00

(二)、记录:
每一条记录都是由以下30个字段构成,其中的记录头记录剩余29个字段的长度。
0、记 录 头:58字节,表示每条记录各字段占空间的字节长度,用2个字节表示,依次为:
姓、名、公司、街道、城市、国家、来电图片、备用(包括群组,名称前6字)、电子邮件、电子邮件2、网址、邮政编码、私人电话、公司电话、移动电话、传真、传真 2、五个电话存在标志、修改时间、内部识别号、生日重要记事地址、生日、备忘提示标志、语音拨号标记、检索拼音等29项。共占用58个字节;
1、姓 :在中国固定为2字节,没有使用这个字段,总为00 00。
2、.名 字 :长度按实际字数计,最长50字节,UNICODE16码(即不论是汉字还是英文,每个字都占两个字节),最长为24个字,结束符为00 00。
3、公司名称 :长度按实际字数计,最长34字节,UNICODE16码,最长为16个汉字,结束符为00 00。
4、街 道 :长度按实际字数计,最长82字节,UNICODE16码,最长为40个汉字,结束符为00 00。
5、城 市 :长度按实际字数计,最长34字节,UNICODE16码,最长为16个汉字,结束符为00 00。
6、国 家 :长度按实际字数计,最长34字节,UNICODE16码,最长为16个汉字,结束符为00 00。
7、来电图片 :存放来电图片在动态内存中的路径,如A:\Pictures\Me.JPG,长度按实际字数计,长度几乎没有限制,UNICODE16码,结束符为00 00。
8、备 用 :固定18字节,由群组类型和重复信息组成。
其中群组类型占头2字节,30为名片、31为家人、32为朋友、33为同事、34为VIP、35为休闲玩伴、36为秘密好友、37为生意伙伴、38为物件接收、39为未设定群组,结束符为00。
然后是重复信息16字节,最多重复名字中的6个汉字,名字不足6个字的用00补足,最后4个字节总为00 00 00 00。
9、电子邮件 :长度按实际字数计,最长51字节,ASCII码,最长50个字符,结束符为00,无该项时长度为1即只含结束符。
10、电子邮件2:长度按实际字数计,最长51字节,ASCII码,最长50个字符,结束符为00,无该项时长度为1即只含结束符。
11、网 址 :长度按实际字数计,最长65字节,ASCII码,最长64个字符,结束符为00,无该项时长度为1即只含结束符。
12、邮政编码 :长度按实际字数计,最长9字节,ASCII码,最长8个字符,结束符为00,无该项时长度为1即只含结束符。
13、私人电话 :长度按实际电话位数计,最长21字节,BCD码(即一个字节可以记录两位号码),号码最长40位,奇数位电话以十六进制数F结束,偶数为FF。
如若电话为01012345678,则记为10 10 32 54 76 F8,如电话为0291234567,则记为20 19 32 54 76 FF。
14、公司电话 :长度按实际电话位数计,最长21字节,BCD码,号码最长40位,奇数位电话以十六进制数F结束,偶数为FF。
15、移动电话 :长度按实际电话位数计,最长21字节,BCD码,号码最长40位,奇数位电话以十六进制数F结束,偶数为FF。
16、传 真 :长度按实际电话位数计,最长21字节,BCD码,号码最长40位,奇数位电话以十六进制数F结束,偶数为FF。
17、传 真2:长度按实际电话位数计,最长21字节,BCD码,号码最长40位,奇数位电话以十六进制数F结束,偶数为FF。
18、私电标志 :固定1字节,FF为没有私人电话,81为有。
19、公电标志 :固定1字节,FF为没有公司电话,81为有。
20、移电标志 :固定1字节,FF为没有移动电话,81为有。
21、传真标志 :固定1字节,FF为没有传真,81为有。
22、传真2标志:固定1字节,FF为没有传真2,81为有。
23、修改时间 :固定16字节,ASCII码,格式为年月日8字节+'T'+时分秒6字节,结束符为00;如20030801T195803,代表该记录是在2003/08/01的19:58:03做的最后修改。
24、内部标识 :固定2字节,二进制码,每条通讯录都不一样。
25、重要记事地址:固定4字节,二进制码,当创建了生日提醒时,则记录重要记事的入口地址,没有生日提醒则为00 00 00 00。
26、生 日 :固定6字节,正整数表示,日(2字节)月(2字节)年(2字节);如生日为1976/11/01,则记录为01 00 0B 00 B8 07。
27、备忘提示 :固定1字节,01表示生日备忘提示打开,00表示关闭。
28、语音拨号标记:固定1字节,二进制第1位代表私电是否有语音拨号,为1代表有,0代表没有;依次第2位代表公电,第3位代表移动电话,第4位代表传真,第5位代表传真2;如该条目的私电和移动电话有语音拨号记录,则该字段为05;
29、检索拼音 :最长7字节,ASCII码,取姓名第一个字的拼音,最长长度为6,结束符为00;没有则为1个字节00;如若名字为张三,则这里存放zhang的ASCII码,为7A 68 61 6E 67 00 00。
若不计来电图片路径,总长最长为635个字节内,若考虑来电图片路径则每条记录的总长不应该超过1024个字节。

三、M55通讯录索引文件格式(7f08.adr)
7f08.adr由每条通讯录记录的索引构成,无其它内容。
索引:固定4字节,记录通讯录条目在5f08.adr中的偏移地址,每一个条目的格式为ww xx yy zz。
代表该条目在5f08.adr记录文件中的偏移地址为zzyyxxww。最高位有特殊作用,即当最高位为1时表示该记录已经删除。

四、越来越胖的通讯录
当对手机的通讯录进行删除时,手机只是简单的把7f08.adr中该条目的最高为置为1,然后把5f08.adr对应地址空间全写为DD,头一字节写为EE,表示此空间无效。
当对手机的通讯录进行编辑时,如果存储新编辑的条目需要的空间大于原来的空间时,手机是先把原记录删除(操作同上),然后在5f08.adr最后创建新的记录。
如果以后添加新的条目则曾经被标记为DD的空间也不会在被利用了,只会在5f08.adr最后继续添加新条目,这个限制是由Flash这种特殊的存储介质限定的。
因此,如果你对你的通讯录反复修改的话,5f08.adr文件内部会出现许多不能被再利用的空间(内部碎片),文件就会变的越来越“胖”。

五、笨拙的拼音检索
M55的通讯录如果按拼音排序的话,可以通过输入拼音字母来检索通讯录条目,这个设计很好,但西门子的软件人员没有把它做的更好,检索拼音只用了人名的第一个字“姓”的拼音来做检索,这样同姓的就会有大量的重复。如果能按人名的每个字的第一个拼音字母检索就好了。

六、软件预告
关于通讯录“减肥”的和拼音检索优化的软件我已经编的差不多了,在我的手机上已经实现了,如要查找刘海涛,只需输入lht,就可直接定位,我的通讯录有150来条,这种拼音检索几乎没有重复的,效率很高!但还有一些东西要优化,估计最后的版本会在一个星期内就推出的。届时我还会写一个专题来讨论,并无偿给蝎友们提供这个软件的使用权。欢迎大家使用并评测!敬请期待……
回复 支持 反对

使用道具 举报

发表于 2006-6-8 23:53:28 | 显示全部楼层
看晕了~~
回复 支持 反对

使用道具 举报

发表于 2006-6-9 01:32:51 | 显示全部楼层
楼主做的统计很认真,有说服力。前几天关于通讯录有人发帖时,我也想到了楼主说的这个方法,当时简单说了几句,这里再支持。

楼主的方法简洁一点说就是,比如:王二傻 ,这个名字,习惯的做法是w王二傻,但w头的在通讯录中太多,还要猛翻,设为wes王二傻,按键次数太多了,于是现在提出的做法是:wdp王二傻,为什么,因为d与e是按同一个键,s与p也是按同一个键,而且符合按键习惯,像t9拼音输入那样,于是在重码增加不多的情况加快了查找速度。而且编辑通讯录加拼音时好像也只能用非t9输入,选中的字母刚好和现在地方法一样。

只是初初有点不习惯,容易只查首字母,反而找不到了。比如何,原先是h开头,现在是g开头了。

改变数字键对应的英文,太不方便,似乎没必要。
回复 支持 反对

使用道具 举报

发表于 2006-6-9 07:59:32 | 显示全部楼层
原帖由 fish99 于 2006-6-9 01:32 发表
楼主做的统计很认真,有说服力。前几天关于通讯录有人发帖时,我也想到了楼主说的这个方法,当时简单说了几句,这里再支持。

楼主的方法简洁一点说就是,比如:王二傻 ,这个名字,习惯的做法是w王二傻,但w头 ...

说的清楚明白

好的说

顶一下 希望能够实现啊 
回复 支持 反对

使用道具 举报

发表于 2006-6-9 09:06:43 | 显示全部楼层
麻烦。越来越晕了!
利用最新成果Zad.bin按三下就可找到xbs.小布什的所有电话号码了!
回复 支持 反对

使用道具 举报

发表于 2006-6-9 09:22:52 | 显示全部楼层
Zad.bin的确是个好东西~~要好好推广~~
回复 支持 反对

使用道具 举报

发表于 2006-6-9 09:54:57 | 显示全部楼层
强烈推荐:
革命性工具——通讯录查询bin文件(可显示中文)
http://mobile.0110.cn/viewthread.php?tid=220468
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-9 14:20:27 | 显示全部楼层
刚发现 Xinshou 的贴里 说这样的功能已经有俄国大侠Rst7 实现了,不知道好不好用,没试过。

但本贴的方法的好处是,不要进入Zad.bin文件,直接在通讯录里实现,而且可以各种手机里(QWERTY键盘的手机就没有这个必要了);缺点是,暂时需要人工编辑通讯录,姓名前加上个累赘。

[ 本帖最后由 asdwsx 于 2006-6-9 15:50 编辑 ]
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2006-6-9 16:25:15 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-9 16:30:54 | 显示全部楼层
一劳永逸

完全可以用程序来实现
回复 支持 反对

使用道具 举报

发表于 2006-6-9 16:40:46 | 显示全部楼层
Zad.bin如果支持拼音首字母查询的话就是最完美的了.
回复 支持 反对

使用道具 举报

发表于 2006-6-9 16:52:33 | 显示全部楼层
楼主的意思是,我们在通讯不的每个人名前,加上模糊音的三个首字母缩写?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-9 17:10:22 | 显示全部楼层
Zad.bin据说支持拼音首字母查询。
很多人在通讯录的每个人名前加入拼音首字母,按键次数并没有减少很多,如果照这样改变一下,按键次数少很多了。多数情况下三次按键就可以定位到联系人,完全符号T9输入法的使用习惯,用起来是很方便的。

这是在通讯录里还无法实现拼音首字母检索情况下的一个折中办法,虽然麻烦一点,呵呵。

[ 本帖最后由 asdwsx 于 2006-6-9 17:15 编辑 ]
回复 支持 反对

使用道具 举报

发表于 2006-6-9 21:38:40 | 显示全部楼层
顶~~~~~~~~~~~~~~~~~~~~~~~~~
回复 支持 反对

使用道具 举报

发表于 2006-6-9 22:07:15 | 显示全部楼层
通讯录在前面增加拼音,才能实现查询;

Zad.bin一样需要在名字前面加拼音,才能实现查询.与其这样,还不如直接使用通讯录.
如果不需要加字母,就能实现查询,我就满意了.
当然Zad.bin还可以查询数字,这是它的一大优点.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员 微信登录

本版积分规则

小黑屋|Archiver|手机版|爱技术 ( 沪ICP备08115260号-3 )

GMT+8, 2025-7-28 01:51

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表