当前位置:  编程技术>移动开发
本页文章导读:
    ▪RatingBar改换图片        RatingBar更换图片 http://kozyr.zydako.net/2010/05/23/pretty-ratingbar/ ......
    ▪ 寨子机山寨文化的前世今生        山寨机山寨文化的前世今生 山寨手机使用的都是台湾联发科的MTK芯片.台湾芯片厂商联发科则是中国山寨机实现快速响应、超低价格的真正推手。2005年,联发科开始向手机厂商推广“交钥.........
    ▪ CMNET跟CMWAP网络连接       CMNET和CMWAP网络连接 J2me上的GPRS网络接入点有两个,一个就是CMNET,一个就是CMWAP。一般移动梦网,百宝箱就是挂在CMWAP上的。CMNETCMNET就是一般的互联网的网络接入点。我们一般在SUN那里看.........

[1]RatingBar改换图片
    来源: 互联网  发布时间: 2014-02-18
RatingBar更换图片
http://kozyr.zydako.net/2010/05/23/pretty-ratingbar/

    
[2] 寨子机山寨文化的前世今生
    来源: 互联网  发布时间: 2014-02-18
山寨机山寨文化的前世今生
山寨手机使用的都是台湾联发科的MTK芯片.台湾芯片厂商联发科则是中国山寨机实现快速响应、超低价格的真正推手。2005年,联发科开始向手机厂商推广“交钥匙”(Turn-Key)模式,即将手机芯片、软件平台以及第三方应用软件捆绑,低价提供“一站式”。山寨机公司只需加上外壳和电池,就能在联发科提供的芯片上生产出一部手机。

   山寨也有很多种类。有的是模仿外形或功能,有的是使用未授权的核心技术,有的是在某些产品基础上进行改造甚至创新。山寨机的智慧足以让一些缺乏创新精神的国产品牌无地自容。中国的电脑喊了30多年的自主创新,只是简单的DIY而已。这些年来,山寨手机之中出现了不少独步世界的技术创新,外观创新,工艺创新,很多奇怪的技术和设计被组合在一起,这些组合有时可能是侵权的,却实现了五花八门的功能

  现在,山寨机已经成为一种非主流手机文化,狼性,创新是其核心。山寨文化是以极低的成本模仿主流品牌产品的外观或功能,并加以创新,最终在外观、功能、价格等方面全面超越这个产品的一种现象。它的衍生物,将打破手机的束缚,而扩展到数码相机、鼠标、键盘等等方面,它的副产品同样可以在相关行业引发结构性震荡。这是师夷长技以制夷的炮火,这是学比赶超的来福枪,山寨文化在抄袭与超越的羊肠小道上一路狂奔,尤其是挣脱了牌照的束缚,握紧了低成本高回报的福祉之后,它摧枯拉朽的震撼力与病毒营销的感染力,彻底颠覆了传统的行业潜规则,建立了以山寨文化为基础的价值序列。而且,山寨文化深深地打上了草根创新、群众智慧的烙印,是当之无愧的中国式山寨。中国的山寨机融入中国的元素,融入了草根文化,必将有长久的生命力。


专家观点
电信业知名专家项立刚对IT商业新闻网记者分析,山寨手机使用的系统,外观的设计使用了一些拥有专利的设计,这些都涉及知识产权的问题,他们在这些方面都是不交费用的,山寨手机需要收编和管理。项立刚告诉IT商业新闻网记者,山寨手机基本不存在创新,山寨手机不代表创新,要保护正常的知识产权,如果生产厂商永远模仿,那绝对不利于他们的长期发展,所以山寨手机的长期发展,还需自身树立品牌。

而中国通信学会理事张庆忠则认为,山寨手机在手机产业链上也有创新,其运作成本低,市场反应速度快,外形功能设计新颖,销售策略灵活。山寨手机极具创新意识,尤其是其破坏性创新模式,有利于实现产业链创新,打破竞争格局。

陈永东对记者说,打击山寨机需要明确违法或侵权山寨的标准。国家也应鼓励模仿中进行创新,设立一些创新基金,还要降低某些许可证与技术专利或授权的成本。如果能帮助山寨厂商转型也是不错的办法。另外,需要对山寨现象和保护知识产权与鼓励创新的平衡机制进行深入研究与辩论。

iSuppli分析师王阳预计,山寨手机出货量将在今年达到2.55亿部后,触顶回落。“这是因为灰色市场的手机供应商将无法进一步降价。”

刘启诚告诉IT商业新闻网记者,山寨手机不论是在国内还是国外,只要有市场,它就会长期存在。它靠一个基础的模板,然后省去设计环节直接模仿生产,但是山寨手机到了一定规模的时候一定会洗牌,当达到一定规模的时候,想要做长做大,必定要树立品牌,注重客户服务,注重产品的研发。

易观国际分析师路理彬则认为,山寨机国内的市场前景有限,主要是品牌国产手机的兴起,运营商的加大补贴,还有前面提到的政策限制未来可能更加严格。比如说运营商的一些3G定制机种已经可以做到700元以下这个价位段。


特点 
1.机型特点为大多基于 MTK 手机平台,屏幕下方有五个图标,手写,铃音声音超大,电池标称(注意,这里是标称,黑手机的电池实际容量一般为标称的1/4--1/3)不低于1800毫安时,更有出过3500毫安时的电池。
  2.包装盒上什么都敢印,除了自己的真实厂址。
  3.不缴纳增值税.销售税,不用花钱研发产品,又没有广告.促销等费用;逃避入网测试.认证检查等为代价,牺牲众多质量标准,因此质量水平根本无法保证,售后也没有保证。
  4.貌似有着很高的性能价格比,山寨机往往有模仿品牌机的嫌疑,但往往功能更强大,价格更便宜。
  5.做工良莠不齐,无明显品牌标示,机身正面或背面常见大大的BLUETOOTH.TOUCHSCREEN.MP4等字样。
  6.这些手机功能极其丰富,价格极其低廉,外观极其新颖,质量极其不可靠。


优点 
1、功能超全面
  几乎所有的山寨机都可以以功能全面而著称,什么超大屏幕,拍照摄像头,Mp3/MP4多媒体播放,甚至堪称高端的GPS导航功能,只要MTK一出这些都不在话下。这种全面的功能配置虽然在一些知名大牌厂商同样可以轻松实现,但成本却是一个不容回避的问题。虽然发展的时间算不上太长,但山寨机如今的功能可以说已经到了只有你想不到的,没有人家做不到的地步,像什么内置干电池,内置蓝牙耳机,八个扬声器等强大的功能配置已经不再是什么新鲜事了,相信更多我们闻所未闻的功能还将不断的涌现出来。
  2、待机能力强
  山寨机的待机能力强已经是众多周知的事情,其电池容量更是一个比一个大,前不久某款名为ZJ268的手机更是以32800毫安的的电池容量创下了历史纪录,而可待机两年的噱头更令人惊愕。其实山寨机待机能力强的优点,非常值得国产品牌及国际厂商学习。当然应该说明的是山寨机的电池容量存在很大的浮夸成分。
  3、价格低廉
  价格因素绝对是目前山寨机与大牌厂商竞争的最强杀手锏,可能在诺基亚只能买到一部低端手机的钱,转而就足以买一部功能全面的山寨机。这对于一个不怎么了解手机的平常百姓来说绝对有着巨大的吸引力。山寨机的价格能够如此低廉,这都要归功于廉价且全面的MTK方案,据业内人士透露一台具有全面功能配置的成品山寨机,其成本一般也就在数百元左右。而这也正是所有国际大厂商所不能实现的。相信山寨机的这一优势还将保持相当长一段时间。


缺点
1、质量无法保证
  由于MTK方案所带来的便利,使得一些生产规模较小,生产工艺也较为粗糙小厂也具备了直接生产手机的能力,这就直接导致质量问题成为了山寨机最大的不确定因素,虽然这并非MTK本身的问题,但毕竟还要归属到手机本身。山寨机的维修一直是最让人担心的,不过由于成本较低,销售商一般会采取直接换机的解决方式。另外,很多销售商和手机维修商形成合作关系,售出手机一般都提供一年保修服务,这有效地解决了山寨机的售后问题,使得消费者敢于购买。
  2、抄袭严重
  抄袭国际知名品牌的产品设计可以说是目前山寨机中最为普遍的现象,像什么苹果iPhone、诺基亚N95、N82等高端产品全都难逃此劫,这些产品普遍都能取得不错的销量成绩。在法律问题上,有可能造成对知名品牌机知识产权侵犯。当然,也有很多山寨机在抄袭的基础之上做进一步的创新和改良,有些功能甚至令品牌机汗颜,如800万像素手机,香烟手机,验钞手机,这些都是创新之处。
  3、全而不精
  之前介绍到功能全面是山寨机的一大优势,虽然这已是不争的事实,但同时另一个问题也日渐突显出来,那就是山寨机虽然样样都能,但却样样都不精。的确,这个问题如今已经成为了MTK方案最大的局限,我们几乎没有见到过搭载高端摄像头的山寨机,原来传说中那部拥有光变镜头的30万像素金苹果LV918就是最好的佐证,而即便是视频或者MP3播放,音质问题也成为了争议的焦点。看见,虽然功能全面但山寨机还是存在不少缺陷。
  4、安全隐患
  山寨机普遍电池容量在4800毫安 3500毫安比比皆是,山寨机手机辐射未经过国家相关机构测试,有一定的安全隐患。
  5、内置收费陷阱
  山寨机内置SP收费陷阱。在经过原信产部的整治之后,大品牌手机都自觉不再内置SP业务,但是山寨机则不同,反而大行其道。这类SP陷阱可能出现在设置选项的“更换壁纸”、多媒体“视频播放”里,若一不小心点到,将在没有任何收费提示或二次确认的情况下直接产生相关费用。
  6、配件安全系数不高
  山寨机的配件质量极差,很多手机用过一段时间不开机或者充电报警大多为配件质量问题.电池电芯容易被烧
  7、手机辐射不能保证
   相对于正规手机而言,很多“山寨机”在手机辐射方面无法保障。正规的厂家都需要经过专业检验,手机辐射要控制在行业规定的范围内。但是“山寨机”从本身的特点而言,就很难做到能够保证辐射符合国标要求。因此,一些“山寨机”很可能会在辐射方面对人体有影响。
  8、售后服务无法保障
  表面看来山寨机的售后保修期限为一年,其实很多山寨机售后服务就是三五个月,主要根据每款机器的销售情况来定,很多山寨机一生产出来由于生产厂家设计缺陷或者质量问题或者厂家的销售渠道差等因素导致机器无法给他们带来赢利,经常出现厂家跑路的情况,这样售后也就没了。


发展
国内山寨机最早始于标有CECT品牌的杂牌手机,实际只是冒用CECT的品牌或者支付一定的现金给CECT得到使用权。后来出现了各种各样的牌子。不管怎样,“山寨手机”的智慧总能敲打到我们最无奈的那条神经,也让一些缺乏创新精神的国产品牌无地自容。这些年来,山寨手机之中出现了不少独步世界的技术创新,外观创新,工艺创新,很多奇怪的技术和设计被组合在一起,这些组合有时可能是侵权的,却实现了五花八门的功能。现在,山寨机已经成为一种非主流手机文化,狼性,创新,迎合市场的山寨机精神影响着越来越多的人。
  最初市场上是充斥着水货和翻修机;因为存在着这个市场,后来联发科做出了MTK芯片使过去由大牌手机商所掌握的核心技术一下变成平民技术;于是“聪明的中国人”开始了手机的创造研发之中,这几年,以天语为代表的我们习惯成山寨机的国产手机制造商正在崛起,并且开始了和大品牌手机厂商的角逐。
  如今更多的山寨手机厂商们已经拥有了自己的品牌,而其中的佼佼者就是天语。如今800万像素、智能山寨手机的出现更值得我们国产大品牌思考。
  山寨机对中国手机业起到重要的促进作用,它使得产业链变得完善,也使得中国手机市场就是一个价格竞争的市场,价格战变成最大特征。
  现在山寨机不仅仅只是局限于手机一方面,PSP、笔记本电脑……越来越多的商品成为了山寨新的市场。
  2008年7月,据报道,有“山寨机之父”之称的中国台湾联发科技股份有限公司(以下简称联发科),即将在内地大规模出货TD芯片,从此3G山寨机时代即将到来。

山寨机的发展经历的三个阶段
  第一阶段 — 简单模仿 做工粗糙
  2006年底,山寨机已经占据国内手机市场近30%的份额。2007年初,山寨机还停留在对热门机型简单的外形模仿而已,基本上只能说是类似,还不敢大张旗鼓的完全照搬。这时的山寨机还是依靠单纯的外形设计和低廉的价格来吸引用户的注意。
  第二阶段 — 贴身肉搏 真假难分
  山寨机在仿制热销机型方面的造诣越来越强,很多机型都能做到让业内人士难辨真假的境地,对手机稍不了解,就可能陷入消费陷阱。市面上热销机型几乎都惨遭复制,像 N73、N95等最热门机型市面上甚至有多达数十款的复制机在热卖。
  第三阶段 — 主动出击 创新不断
  山寨机后期的发展更是创新不断,让人大跌眼镜。外形方面突破很大,已经跳出模仿的圈子,可以用一句话概括:“只有想不到,没有做不到”。功能方面的改进也不少,宣传方面同样是噱头不断,拍照、大屏、手写、电视等概念全都完美的融入进来。


山寨语录
“一定得选最好的硬件芯片,雇法国设计师,做就得做最高档的手机;平台直接用MTK,屏幕最小也得3.0的,什么智能呀、电视功能呀、双卡同时待机呀、能给他装的全给他装上:前面一个摄像头、后面一个摄像头,手机一开机,甭管有事儿没事儿都得跟您说:‘咩事啊?’一口地道的广东普通话,倍儿有面子;手机里再建一读卡器,卡用索尼的,一个G就几十块;再装一特大电池,365天待机,就是一个字儿——爽,接个电话就得说它一个小时才行;周围的人不是金立就是 CECT,您要是拿一外国机器。都不好意思跟人打招呼:您说这样的手机,一部得卖多少钱啊?——我觉得怎么着也得2000多块吧。2000块?你打劫啊?1000块起,您别嫌便宜,还必须打折,您得研究顾客的购物心理:买手机连1000块都不愿意掏的主,根本不怕你便宜;什么叫现代人士你知道吗?现代人士就是买东西就买最便宜的,不买最好的。所以,我们做手机的口号就是:不但要好!还最便宜!”

    
[3] CMNET跟CMWAP网络连接
    来源: 互联网  发布时间: 2014-02-18
CMNET和CMWAP网络连接
J2me上的GPRS网络接入点有两个,一个就是CMNET,一个就是CMWAP。一般移动梦网,百宝箱就是挂在CMWAP上的。

CMNET

CMNET就是一般的互联网的网络接入点。我们一般在SUN那里看到的J2ME实例代码都是基于CMNET接入点的网络下载。一般来说,CMNET可以连接所有的网络站点。下面就是我在开发仙剑的CMNET的下载资源包的代码片断。

   /***************************************************************************

   * 下载网络文件

   * @param url String 要下载的文件的地址URL

   * @return byte[] 如果下载成功,返回文件的字节缓冲;

   *             如果下载失败,返回null

   */

  public byte[] download_CMNET(String url) {

    ContentConnection c;

    InputStream is = null;

    byte[] data = null;

    try {

       c= (ContentConnection)Connector.open("http://"+ServerName+"/"+url,Connector.READ,true);

       is = c.openInputStream();

       int dataLength = (int) c.getLength();

       if (dataLength == -1) {

         ByteArrayOutputStream bStrm = new ByteArrayOutputStream();

         int ch;

         while ( (ch = is.read()) != -1)

           bStrm.write(ch);

         data = bStrm.toByteArray();

         bStrm.close();

       }

       else {

         data = new byte[dataLength];

         Data_Read_Buf(is,data,0,dataLength);

       }

       is.close();

       c.close();

    }catch (Exception e) {

      data = null;

    }

    c= null;

    return data;

  }

代码很普通,不过需要注意的有以下两点。

1.       getLength()并不是一定都有效,比如我发现在Nokia 40的手机上这个函数有效,但是在Nokia 60的手机上,这个函数通常都无效。所以我们通常都必须要有另外一个下载方式,既是从while循环不断从输入流中一个一个读byte,如果读出为-1,则表示输入流数据读完。

2.       Connector.open最后一个参数是表示是否允许timeout,通常我们都得设置true,因为GPRS网路经常中断,那么必须有个timeout来退出连接。依照我的经验,一般如果能够执行完c.openInputStream()后,就表明连接上了,只要连接上后,数据的下载是比较快的(也就是说网络连接是最慢的)。

CMWAP

      MOTO的手机通常都是默认接入点就是CMWAP。在手机上的“网页“->”网页设定”中可以设置默认的接入点。一般中国大陆的出产的MOTO手机都是设置的”移动梦网”的网络接入点,起始就是CMWAP接入点。而MOTO最可恶的一点就是一旦默认接入点是CMWAP,那么所有的J2ME应用程序都无法访问CMNET。而Nokia 40虽然默认的接入点是CMWAP,但是运行中可以自动检查CMNET来访问CMNET。

      解决MOTO的网络连接有两个办法:

1.       在”网页“->”网页设定”中新建一个网页,然后不需要填写任何参数,设置成默认后,它就可以让手机上J2ME程序通过CMNET访问网络了。

2.       通过移动的代理来实现通过CMWAP访问互联网。下面是仙剑中使用CMWAP下载资源包的代码片断:

/***************************************************************************

* 下载网络文件

* @param url String 要下载的文件的地址URL

* @return byte[] 如果下载成功,返回文件的字节缓冲;

*             如果下载失败,返回null

*/

public byte[] download_CMWAP(String url) {

  HttpConnection c;

  InputStream is = null;



  byte[] data = null;

  try {

     c= (HttpConnection)Connector.open("http://10.0.0.172:80/"+url,Connector.READ,true);

     c.setRequestProperty("X-Online-Host",ServerName);

     c.setRequestProperty("Accept", "*/*");

     is = c.openInputStream();

     int dataLength = (int) c.getLength();

     if (dataLength == -1) {

       ByteArrayOutputStream bStrm = new ByteArrayOutputStream();

       int ch;

       while ( (ch = is.read()) != -1)

         bStrm.write(ch);

       data = bStrm.toByteArray();

       bStrm.close();

     }

     else {

       data = new byte[dataLength];

       Data_Read_Buf(is,data,0,dataLength);

     }

     is.close();

     c.close();

  }catch (Exception e) {

    data = null;

  }

  c= null;

  return data;

}

比如我们要下载

http://xxx.xxx.xxx.xxx/BB/AA.dat,那么上面的ServerName= ”xxx.xxx.xxx.xxx”, 而url = ”BB/AA.dat”
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



   要清楚的知道所谓的cmwap和cmnet只是中国移动(CMCC)为了它的计费方便,给用户提供的两个手机上网接入点。cmwap是按包月计费的,前提是该用户已经加入某一个包月服务(废话>>*&^%^%)。cmnet是按照流量来计算的,也有谣传说cmnet中国移动无法计费的,不管怎么说,这种接入方式,玩家的荷包要大出血的,我的好多机友都有惨痛经历,在此深表同情。
现在清楚了cmwap和cmnet的区别之后,我给大家再说说对于开发人员来说,具体实现的做法。
      一般我们现在程序开发的时候有3种方式:
      ①HTTP协议,直接联网。
      如果url是“www.mySpace.com/test”,那么程序如下:
      httpConnection = (HttpConnection)Connector.open(“http://www.mySpace.com/test”);
      ②HTTP协议,需要添加主机头域"X-Online-Host"和分隔符头域“Accept”。
      如果url是“www.mySpace.com/test”,那么程序如下:
      httpConnection = (HttpConnection)Connector.open(“http://10.0.0.172:80/test”);
      httpConnection.setRequestProperty("X-Online-Host", “www.mySpace.com”);
      httpConnection.setRequestProperty("Accept", "*/*");
      ③SOCKET协议。
      如果url是“www.mySpace.com/test”,那么程序如下:
      socketConnection = (SocketConnection)Connector.open(“socket://www.mySpace.com/test”);
      OK,这就是我们最普遍的程序联网的方式。那么和cmwap与cmnet有什么区别呢?现在我就说明。
      cmwap只可以走HTTP协议,也就是第三种方式不可行。cmnet既可以走HTTP协议,又可以走SOCKET协议,只是无论如何都需要直接连接url,即第二种不可行。于是现在问题出来了,按照我们程序员的认识open(url)就足以,为什么会闹出来一个添加头域信息的呢?而且同属于在cmwap下面的联网方式的?这里我是这么理解的,部分手机终端厂商为了迎合中国移动的要求,部分手机里面内置了一个程序,一旦检测到接入点是cmwap的,它就会把当前请求的url分解,怎么分解的呢?就是第二种方式的分解,把主机和主机后面的url分别写入不同的位置了,在头域里面标记了主机的内容和一个分隔符的标志。说到这里,部分读者就会明白了,如果说部分手机有这么一套机制可以分解url,那么那些没有这个机制的,就只有程序员自己实现了,于是出现了第二种方式。是的,至少我想是这个原因。
      所以,这就解释了两个问题:
      1、为什么有些手机,比如NOKIA7210,用第二种方式不能够联网?因为手机自己会解析请求的url,如果按照第二种方式写的话,那么url又被解析一次,就成了
      httpConnection = (HttpConnection)Connector.open(“10.0.0.172:80/test”);
      httpConnection.setRequestProperty("X-Online-Host", “10.0.0.172:80”);
      httpConnection.setRequestProperty("Accept", "*/*");
      成了请求移动网关了,它怎么会有你的test呢?不可能成功的,除非是赶巧了。那就要恭喜你中奖了,可以给移动来点XXXX的了。
      2、选择cmwap联网的手机实际上最终请求的是“10.0.0.172:80”这个url,即移动的网关。这就知道了移动如何计费的了。走它的网关,它想怎么计费还不行啊。
      现在需要重点说明的是,HTTP协议的直接请求url的方式,不是cmwap专有的,上面说了cmnet也可以。
      那么怎么区分是cmwap还是cmnet呢?
      我的观点是:程序员不可能实现的。因为这个是手机自己的特性。它要么是在出厂的时候就被限制死了,要么就是像部分智能手机那样可以让用户自己选择。所以,程序员无法控制这些。除非你事先知道了这个手机的这个特性,否则你要是硬来的话,就像7210上面采用第二种方式联网,那么你就别想连接成功了。
      现在说说GPRS,这个大家已经很熟悉的词汇。在此还是要感谢一下阿里山和xinian_yang,因为是阿兄给我讲明白的这些,而xinian_yang兄则是这个话题的发起者,嘿嘿,我是组织者。要说有啥好讲的,GPRS不就是上网吗?原来网不是这么好上的,GPRS是分级别的!我们都知道手机有自己的语音通道,那么上网走的是手机的什么通道?通过阿兄的讲解,我知道了,GPRS的10级才可以上网和语音双通道同时开通,比这个级别低的,都只有一个通道单独存在,即要么上网要么通话,当低级别的GPRS在上网的时候,如果有电话打入的话,你会听到的是占线的提示音,叮咚!这下子大家知道,为商在上网的时候会接不到电话或者短消息了吧?哈哈。
      似乎没有什么要说的,有!就是关于数据传输方面的。
      网上的,或者说sun提供的,大部分是这样的:
      connection = (XXXXXXXX)Connector.open(“10.0.0.172:80/test”);
      os = connection.openOutputStream();
      is = connection.openInputStream();
      os.writeByte(...);
      in ch = 0;
      while(ch != 1){
       ch = is.read();
      }
      好的,就是这样,当然,里面的部分实例会依据不同的协议有所区别。那么,我的问题是,谁会用这个糟糕的东西去实现自己的应用的???当然,这个只是例子,目的是告诉大家该怎么用这些API,呵呵,所以,大家千万别以为sun出的就一定是真理!不是的!
      通过我的研究,我发现在数据传输方面有六种方式(没有算上sun提供的那种方式):
      ①HTTP的协议,参数写在头域中。
      ②HTTP的GET方式。
      ③HTTP的POST方式,但是在BODY中自己实现了名值对的组合,即param1=XX&param2=XX的参数传输形式,采用的API是DataOutputStream的writeUTF()。
      ④HTTP的POST方式,但是在BODY中是按照和服务器端事先约定好的数据传输格式传输的,采用的API是DataOutputStream的write()、writeByte()、writeUTF()、writeInt()、writeShort()等等方法。
      ⑤SOCKET的方式,这个时候就需要为网络部分建立两个线程,一个用来发送数据,采用名值对,我这里不多说了,另一个是接收数据,用的是DataInputStream的read()、readByte()、readUTF()、readInt()、readShort()等等方法。
      ⑥SOCKET的方式,这个时候仍然需要为网络部分建立两个线程,一个用来发送数据,用的是第三种方式提到的那些API,另一个是接收数据,用的是DataInputStream的read()、readByte()、readUTF()、readInt()、readShort()等等方法。
      HTTP的协议的接受方式有两种:
      ①读取服务器反馈信息的头域,用的是HttpConnection的getHeaderField()方法。
      ②读取服务器反馈信息的BODY,用的是DataInputStream的read()、readByte()、readUTF()、readInt()、readShort()等等方法。
      我个人主张的在程序里面实现第四种和第六种方式接收数据采用读取BODY的内容。因为这两个在结构上是相似的,容易架构在一起,而且解析的过程也比较简单,不用找分隔符,而且可以传输大容量的数据。只是,它也有缺点,就是采用这种方式的话,需要服务器端的开发人员和客户端的开发人员,事先定义好他们之间的数据传输的格式。
      以登陆为例,就是要定义是先传登陆名还是先传密码,登陆名是什么数据类型,是byte还是int还是String的,密码是什么类型,是byte还是int还是String的。
      就是这堆东西。由于不同的应用这些东西可能不一样,所以需要为每一个都量身定做。似乎这样很麻烦的。呵呵,其实不是的,至少我认为不是,因为我们可以把那些通用的都整理出来,这样也就便于维护了,比如登陆、注册、更新数据等等,这些几乎每一个应用都有,也几乎每一个都是一个样子的,那么在第一次定义好之后,以后就不用再定义了,那不是省事了,哈哈。
      这里忘记了一个最重要的东西,那就是,一定要告诉服务器你打算做什么!就是你要登陆还是注册,这个一般都是用数字表示的。按照我的想法,也应该是写在BODY里面的,我一般都是使用int类型的,表示事件的ID。
      最后,再说说网络框架的搭建。我的建议是为网络开两个线程(这样加上应用主线程,总共就是三个线程,别害怕啊,呵呵)。一个是发送数据的线程,一个是接收数据的线程。大家一看,诶?和上面的SOCKET的方式一样。呵呵,是的,这就是为了把HTTP协议的和SOCKET协议的整合在一起做出的妥协。具体的原因,我就不多说了,大家亲自做的时候,可以体会到的。我要说的就是一个实现的大体思路。其实很简单的,就是在线程中灵活使用wait()和notify()这两个方法。就这么简单,呵呵,别的不多说了,打得手累!



    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
网站运营/SEO iis7站长之家
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3