(七) IrMC简介 要实现通讯薄、日历、便签的同步,需要用到IrDA协议里面的IrMC部分。 IrMC全称为Ir Mobile Communications。它定义了利用IR无线传输的设备之间通讯的规则。IrMC协议文档详细叙述了IrMC的方方面面,可以在我的主页(http://dream-world.)下载到PDF版本。 下面主要讲述我在开发当中所用到的部分以及实现方法。更为详细的资料请参考IrMC协议。 Phonebook 在手机软件桌面端通讯薄的管理是整个软件的必备功能之一,利用其信息可以方便的和Outlook等软件实现同步,实现更强大的功能。 通讯薄的管理分为读取、删除、增添、修改。通过这几个功能的组合可以实现更为强大的同步功能。下面分条概述。 l 读取 n 读取所有的Entry 1. 读取指定LUID的Entry l 删除 1. 连接到IrMC_Sync_Service(发送0x80, 0x0, 0x13, 0x10, 0x0, 0x40, 0x6, 0x46, 0x0, 0xC, 0x49, 0x52, 0x4D, 0x43, 0x2D, 0x53, 0x59, 0x4E, 0x43)使手机处于同步状态。 2. 得到ChangeCount ChangeCount是手机里面储存修改次数的一个数值,主要用于同步。具体相关资料请参考IrMC协议。 3. 构建数据包。 4. 使用OBEX的PUT命令,传输一个xxxx.vcf(xxxx指LUID)空文件到/telecom/pb/luid覆盖即可。 5. 发送0x81, 0x0, 0x3断开IrMC_Sync_service l 添加 1. 连接到IrMC_Sync_Service 2. 得到ChangeCount 3. 构建数据包 4. OBEX的PUT命令上传到/telecom/pb/.vcf文件即可。 5. 发送0x81, 0x0, 0x3断开IrMC_Sync_service l 修改 Notes 便签是大多数手机都提供的功能,能够方便的记录简短的信息。在我的M55手机上能够储存150Byte的信息,也就是150个英文或者75个汉字。软件通过管理便签可以与Outlook等软件同步,实现更高级的功能。 管理Notes的方法和Phonebook类似。得到全部Notes的vNote只需要获取/telecom/nt.vnt即可。删除、添加、修改只需要把/telecom/pb/luid改为/telecom/nt/luid即可。在此不再赘述。 Calendar 管理Calendar的方法和Phonebook类似。得到全部vCalendar只需要获取/telecom/cal.vcs。删除、添加、修改只需要把/telecom/pb/luid改为/telecom/cal/luid即可。在此不再赘述。 但值得注意的是vCalendar的结构 BEGIN:VCALENDAR VERSION:1.0 BEGIN:VEVENT …. END:VEVENT BEGIN:VTODO … END:VTODO END:VCALENDAR 完整的vCalender包含了至少一个vEvent或者一个vTodo,因此在添加、修改vEvent、vTodo时要将其补充为一个完整的vCalender结构,否则服务端会拒绝操作。 遇到的问题: 在实际操作中,遇到问题最多的地方在Phonebook部分。我的手机第一次同步的时候经常出现数据库被锁的情况,用SiMoCo读取也是一样,说明是手机拒绝写操作。这时候关闭手机再重新启动就好了。至于原因,我还没有搞清楚,希望能有高人指点。 |
|