找回密码
 注册
搜索
查看: 1363|回复: 11

[讨论] 请教大虾,电话本是如何排序的,是不是有统一的协议?

[复制链接]
发表于 2007-4-7 11:31:36 | 显示全部楼层 |阅读模式
请教大虾,电话本是如何排序的,是不是有统一的协议?
发表于 2007-4-8 22:38:38 | 显示全部楼层
没有,你想怎么排就怎么排!
大陆手机大部分用拼音排序。其他地方的貌似有用unicode排序的。
点评回复

使用道具 举报

 楼主| 发表于 2007-4-9 14:04:14 | 显示全部楼层
电话本包括SIM卡和手机两个部分,是不是先对两部分分别排序,然后再统一排一次?
不知在排序时是建立一个映射,还是把两部分读出来再进行排序呢.
点评回复

使用道具 举报

发表于 2007-4-11 10:27:19 | 显示全部楼层
在mtk中,电话本读取时按照index读取,等所有条目读完后统一排序,有一个映射表对应每条记录的index
点评回复

使用道具 举报

 楼主| 发表于 2007-4-11 11:08:44 | 显示全部楼层
那么把所有条目都读出来,应该给这些条目分配一个比较大的内存空间吧?
点评回复

使用道具 举报

发表于 2007-4-13 18:27:43 | 显示全部楼层
确实需要一个大的buffer来保存所有记录的数据(我们目前设计的手机支持1000条记录),不过只保存name和number,用于浏览时查看,其余的信息如home number、office number、address、e-mail等信息则被保存在nvram中,只有在查看某条记录的详情时,才去读取nvram中的相应的数据
点评回复

使用道具 举报

 楼主| 发表于 2007-4-17 23:55:27 | 显示全部楼层
谢谢上面这位大哥,你讲的我懂了[em14][em14][em14]
点评回复

使用道具 举报

发表于 2007-4-20 16:02:59 | 显示全部楼层
关于电话本的排序,
除了保存通话记录的几个电话本是要按时间排序外,
其它几个电话本的排序是没有统一规定的。

不过对于特定地区,
会根据其文化特点、字符集以及使用习惯采用不同的排序策略。

特别的,对于大陆地区,
通常总的排序策略是按照拼音排序。
当然还会有些具体情况需要考虑,
比如多音字的情况、拼音序列相同的字的情况等等。
点评回复

使用道具 举报

发表于 2007-4-20 16:13:57 | 显示全部楼层
关于内存中的数据,和具体平台有关。

我以前是做TI平台的,我自己做了重构。

最好只在内存中保存当前正在使用的索引表(或者索引表的一部分),
不要保存具体记录的数据(当然,可以加入 cache 机制)。
点评回复

使用道具 举报

 楼主| 发表于 2007-5-7 16:28:27 | 显示全部楼层
是啊,我看了一下代码,正如erichain所说排序确实是按拼音排序的,没想到还会有那么大一个拼音索引表,难怪初始化电话本需要老长老长的时间,另外影响初始化时间的因素,如从NV中读出每条记录的信息也是一个方面吧[em13][em13][em13]
点评回复

使用道具 举报

发表于 2007-5-7 17:13:21 | 显示全部楼层
排序规则:
对中文手机:
英文排前面,中文排后面,中文按照拼音排序,存在flash和UIM卡中的排序不一定是按照这种方式来(考虑到兼容性,并非所有的手机的排序方式都一致),所以在电话本从UIM/flash读出后需要重新按照排序规则排序。
其他的语种,需要根据不同的语言规则来排序,不一定是按照Unicode来排。

初始化时间长:
电话本初始化采用异步初始化方式,影响电话本初始化的时间最大的影响是UIM卡的反应速度很慢。 至于排序,采用按照UNICOde 升序排列的拼音表用二分搜索法搜索起来很快的,不会占用过多的时间。
点评回复

使用道具 举报

发表于 2007-8-28 14:05:35 | 显示全部楼层
我很想知道。受益匪浅
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-12-25 01:31 , Processed in 0.063689 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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