浅谈OTA 方式来设置手机!

OTA 即: Over The Air ,中文叫做“空中下载”也叫做“手机无线上网设置”等。其定义包括的范围很广,我们先来看一下网上搜索出的一些:

  1.   一项基于短消息的机制,通过手机终端或服务器(网上)方式实现SIM卡内业务菜单的动态下载、删除与更新,使用户获取个性化信息服务的数据增值业务(简称OTA业务)
  2. J2me软件通过OTA方式,无线下载安装到手机上。
  3. 通过OTA短信,下载手机的配置信息。

确实是比较广的,大家对其理解,往往是停留在上述某一部分功能上。就像我,几天前,还仅仅认为,OTA就是J2ME中无线下载安装的代名词。刚巧需要研究一下OTA的短信配置,所以才把这个东东的定义彻底的了解了一番。看下面这段抄的定义,是对其最好的理解:

OTA(Over-the-Air Technology)空中下载技术. 是通过移动通信(GSM或CDMA)的空中接口对SIM卡数据及应用进行远程管理的技术。空中接口可以采用WAP、GPRS、CDMA1X及短消息技术。

下面说一下OTA 短信配置手机:

OTA标准由NOKIA 和 ERRICSON共同制订,当前覆盖的手机和所能够进行设置的功能如下:

对于 WAP/MMS/GPRS的设置,国内有个叫潍坊环泽(http://www.otaservice.com/)的公司,已经做出了一套系统,能够提供对手机的对应属性进行OTA设置,可是,不理解的是,他们需要被设置的手机提供IMEI号,这点我到现在也没有明白。

对于Bookmarks的设置,牛人旁观者[SMS&WAP]实例讲解制作OTA短信来自动配置手机WAP书签[附源码] (http://www.cnblogs.com/zhengyun_ustc/archive/2005/09/05/otawapbookmark.html)一文中已经做了详细的说明,我也对其WBXML做了测试,能够对我的S60手机进行设置短信下发。

对于SyncML的设置,旁观者在其[OTA]制作OTA短信来配置手机与服务器同步(http://www.cnblogs.com/zhengyun_ustc/archive/2005/09/26/otasmssyncsettings.html)一文中也做了说明,并提供了测试代码。

对其所得到的WBXML代码,我做了测试,发现下发后的短信,手机收到后执行,报系统错误。仔细看了一下,是第一个短信包的长度为124字节,超过了120字节的限制。

旁观者的WBXML如下:

 

第一个短信包:

0b0504c34cc00200030402010106060502020b81ea01016a00555803312e30000150036
87474703a2f2f3231392e3233382e3136382e3138333a383038302f73796e63346a2f73796e6
30001520338300001544e03746578742f782d766361726400014f03322e31000156032e2f73636
172640001510373796e63346a000147490331000157037a68656e6779756e0001

其中的“0201”代表共有两个短信包,这是第一个包;

第二个短信包:

0b0504c34cc00200030402024d010101510353796e63346a000147480332000149033
1000157037a68656e6779756e00014d01014b4c033100015303346a53767200010101

其中的“0202”代表共有两个短信包,这是第二个包;

 

顺便说一句,我用是通过公司在天津移动给我们的WAP PUSH下发接口来测试二进制短信下发的,在此谢谢公司的兄弟。

附上我修改的XML->WBXML转换的代码,主要是修改于旁观者的代码。

修改的主要内容如下:

 

     public   static   void  main(String[] args)  ...{
        
// TODO Auto-generated method stub
        try ...{
            
//File xmlDir = new File("C:/opt/xml/syncsettings.xml");//
            File xmlDir = new File("D:/workspace/SyncSettingBuilder/syncsettings.xml");
            String xml = IOTools.readFileString(xmlDir);
            
            SyncSettingWriter writer = new SyncSettingWriter();
            vWriter.addElement(writer);
            XmlParser xmlp = new XmlParser(new StringReader(xml));
            // 遍历XML解析
            traverseXML(xmlp);
            
            /**//*
             * 对于Vector中的每一个Writer都做关闭动作
             
*/
            int nIndex = 0;
/**//*这段编译不通过,被我改了!
            for(SyncSettingWriter writerSync : vWriter)
            {
                nIndex++;
                writerSync.close(vWriter.size(), nIndex);
                System.out.println(encodeHex(writerSync.getBytes()));
            }
*/
//下面是改掉后的:
            for(int i=0;i<vWriter.size();i++)
            ...{
                SyncSettingWriter writerSync  
= (SyncSettingWriter)vWriter.elementAt(i);
                nIndex++;
                writerSync.close(vWriter.size(), nIndex);
                
                String hexText = encodeHex(writerSync.getBytes());
                //System.out.println(hexText);
                
                String formattedText = formatHexText(hexText);
                
                System.out.println("byte[] bytes" + i + " = {" + formattedText + "};");
            }
            
        }
 catch (IOException e) ...{
            
        }
 finally ...{
            
        }

    }

 

为了测试这种方法是否真实可行,我下载了旁观者代码,做出了修改,这修改后的代码中, 能够正常将一个用来设置SyncML的XML转化成WBXML,在S60手机上通过了测试。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值