手机网络通信渠道在开发中的运用

本片文章出自http://blog.csdn.net/andywuchuanlong,转载请说明出处,谢谢!

本篇文章将要讲述的是在项目开发中如何选择手机通信渠道,这所谓的通信就是指手机终端与服务器的数据交换,而渠道指的就是手机终端与服务器进行数据交换的方式。

以Android项目开发为例,Android中可以使用的通信工具大概有以下几种:HttpUrlConnection、HttpClient、Socket等。但是是不是这些工具都可以应用于所有的渠道呢?

手机的通信渠道有以下几种:

1、WLAN:无线网络渠道,比如说wifi,当手机利用这种渠道方式上网,就会直接请求服务器。

2、APN:手机apn接入点,就是基站,而这种接入点方式大概有两种:

a) wap方式:这是一种地域性的渠道方式,主要用于增值业务,比如说中国移动的代理ip是10.0.0.172,端口是80,电信端口是200,。这种方式上网,经过wap网关(代理)的时候,运营商首先会拦截,过滤掉用户的请求,然后再转向真实的资源服务器。比平常的方式多了步骤,也就降低了上网的速度。走wap网关并不是所有的通信工具都是可以的。HttpUrlConnection貌似是不行的,网络稳定性非常的差。如果说在手机上网时候使用wap方式,就需要在代码中配置。

b)Net方式,这种方式直接请求服务器。

下面展示代码如何选择通信渠道。

    首先判断走的是哪种通信渠道?是wifi还是apn,apn中的wap特殊
    获取网络类型:WiFi or mobile,判断是哪个apn被选中了,获取apn的代理信息
          public static boolean checkNet(Context context) {
               // 判断:WIFI链接
               boolean isWIFI = isWIFIConnection(context);
               // 判断:Mobile链接
               boolean isMOBILE = isMOBILEConnection(context);
               // 如果Mobile在链接,判断是哪个APN被选中了
               if (isMOBILE) {
                    // APN被选中,的代理信息是否有内容,如果有wap方式
                    readAPN(context);// 判断是哪个APN被选中了
               }
               if (!isWIFI && !isMOBILE) {
                    return false;
               }
               return true;
          }

          /**
          * APN被选中,的代理信息是否有内容,如果有wap方式
          *
          * @param context
          */
          private static void readAPN(Context context) {
               Uri PREFERRED_APN_URI = Uri.parse("content://telephony/carriers/preferapn");//4.0模拟器屏蔽掉该权限
               // 操作联系人类似
               ContentResolver resolver = context.getContentResolver();
               // 判断是哪个APN被选中了
               Cursor cursor = resolver.query(PREFERRED_APN_URI, null, null, null, null);
               if(cursor!=null&&cursor.moveToFirst()){
                    GlobalParams.PROXY=cursor.getString(cursor.getColumnIndex("proxy"));
                    GlobalParams.PORT=cursor.getInt(cursor.getColumnIndex("port"));
               }
          }
          HttpClient中:设置代理信息
          public HttpClientUtil() {
               client = new DefaultHttpClient();
               // 判断是否需要设置代理信息
               if (StringUtils.isNotBlank(GlobalParams.PROXY)) {
                    // 设置代理信息
                    HttpHost host = new HttpHost(GlobalParams.PROXY, GlobalParams.PORT);
                    client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, host);
               }
          }
时间: 2024-10-10 22:04:09

手机网络通信渠道在开发中的运用的相关文章

android开发中,两个按下手机实体返回键,两个Activity反复来回跳转的问题

android开发中,对于用intent实现跳转的Ativity,有时候按下手机的返回键时,两个Activity之间会多次相互跳转,始终退出不了程序的情况.这是由于从Activity  A跳转到Activity  B时,A被压入Activity栈中:当从B返回时,默认又重新创建了一个Activity A对象,这样一来就有了多个Activity A对象.所以造成了无法退出情况. 解决办法是:在AndroidManifest.xml文件中找到Activity A项,在其属性中加入  android:

Cocos2d-x手机游戏开发中-组合动作

动作往往不是单一,而是复杂的组合.我们可以按照一定的次序将上述基本动作组合起来,形成连贯的一套组合动作.组合动作包括以下几类:顺序.并列.有限次数重复.无限次数重复.反动作和动画.动画我们会在下一节介绍,本节我们重点顺序.并列.有限次数重复.无限次数重复和反动 下面我们通过一个实例介绍一下组合动作的使用,这个实例如下图所示,下图是一个操作菜单场景,选择菜单可以进入到下图动作场景,在下图动作场景中点击Go按钮可以执行我们选择的动作效果,点击Back按钮可以返回到菜单场景. 下面我们再看看具体的程序

iOS开发中,怎么打包为ipa格式的软件包以及怎么安装到手机终端上

iOS开发中,怎么打包为ipa格式的软件包以及怎么安装到手机终端上. (我的开发环境为Xcode6.1.1 ) 作为个人开发者(当然我的开发者帐号为个人开发者帐号,而不是企业开发者帐号),对于自己来说,我们只需要真机调试就可以将应用安装到自己的手机上:如果你在发布前想给更多的测试或朋友使用你的APP(关键是他们并不在你的身边,如果在你的身边,你当然可以通过真机调试一个一个的将应用安装到他们的手机上:此时你的APP还没有上线,Appstore还没有),你该怎么做呢?想想吧! 在开发者中心中,你可能

IOS开发中@2x图片等适应不同分辨率手机

开发中,例如: nanshanImage.image=[UIImage imageNamed:@'index_pic.png']; 在项目中还保存中[email protected]的图片,此图为了只适应960*640的分辨率手机 注意:适应Iphone5的相关图片尺寸,也要加@2x.png.比如欢迎界面:[email protected]:这个才能匹配上. 而index_pic.png是适应640*320的手机,但是在代码中必须写成[UIImage imageNamed:@'index_pic

手机游戏开发中如何选择适合的纹理格式

为毛要写这个 本来觉得像这样的问题,是无法归类的,因为不同的项目有不同的需求,但今天因为quick论坛中的一个技术疑问贴,钩起了我整理这篇文章的兴趣 http://www.cocoachina.com/bbs/read.php?tid=214811 于是,我决定尽力描述一下纹理格式选择方面的问题,一是起到一个科普的作用,因为目前没有发现十分完整的讲这方面的文章.二是整理一下自己的思路. 当然,这些东西肯定不是我自己凭空YY出来的,我也是参考了不少文章,也从项目中总结了一些问题.在此先列出一些链接

iOS开发中的数据安全隐患和解决方案

移动互联网的兴起,每天都会涌现大量的app产品,无论公司开发还是个人开发,大家都在追求更快的抢占市场,但是确忽略了打磨产品,也忽略了移动开发中的数据安全隐患,如果我们用Charles工具,很容易截获到很多知名的app的传输的隐私数据,包括用户名和账号信息等.比如下图是我用Charles(青花瓷)软件截获糗事百科明文方式传输的用户名和账号信息,网上了解到神州租车和一嗨租车的用户登陆也是明文传输,明文传输很容易被截获.下文我就将我今天查阅各种资料学到的关于iOS中数据安全的知识总结下来和大家分享.

手机游戏渠道SDK接入工具项目分享(三)拨开云雾是个坑

一直在纠结是先写框架设计还是先写掉过的坑,最后本这娱乐大众的态度先写掉过的坑让大家乐呵下. 项目开发过程中遇问题无数,回顾下8个大坑照成了项目一定程度上延期甚至返工. 1.  项目一开始几个人把现有3家主流的产品(1接,棱镜,AnySDK)研究了一遍.没想先在这里就进坑了.在研究了几天后发现这3家虽推出有一定时间,但都是以第三方服务角度设计和开发的产品,与需求不符. 2.  版本管理.和流程管理等内容因为运营人员更替一直在调整,直到我提出需要加价才做吧.需求上快把打包工具做成OA系统了,删除了于

手机游戏渠道SDK接入工具项目分享(二)万事开头难

一般接到任务后程序员们通常都开始着手进行技术调研了,但我这活是项目负责人.还有一大堆事情要先期准备,没人能帮忙. 一.人力配置 考虑的之前已经有一波人搞了大半年,但没有起色,先期也没有太大人力需求,所以不指望这批人了.因为是外包收钱按人头工时算,所以拉几个自己兄弟填坑. 初期人力配置 服务端x 1.Android x 1 二.开发需求 自己手机游戏CP作了3年,需求直接写完后让对方确认,一次通过. 1.      公司多款游戏都需要使用这套工具,需要作适配兼容,还好都是Unity3D项目.之后我

HTML5移动开发中的meta与link

meta HTML5移动开发中的一些webkit专属头部标签,能够帮助浏览器更好的解析HTML代码,从而为HTML5移动开发提供更好的前端表现与体验 viewport网页缩放 1 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no" /> UTF-8编码 1