码迷,mamicode.com
首页 > 移动开发 > 详细

Android通信篇

时间:2015-06-19 11:48:55      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:android开发   通信   

在Anroid中,通信技术包括多个层面,在UI层设计多种事件(如触控事件、案件事件、轨迹球事件等);在框架层设计Intent、Meaage等;在内核层则涉及Bundle、RPC、共享内存等技术。本章将重点介绍UI层和框架层的通信机制。

1.Intent通信

        Intent通信实际上是对Open-Binder通信机制的封装。在Linux中,存在D-Bus和open-Binder两种进程间通信机制,其中D-Bus应用得更广泛。但在Android中,采用的是open-Binder通信机制,D-Bus只在开源BT协议栈BlueZ中得到应用。

        每个Intent消息可以由component、action、data、category,extras、flags等几个属性构成。

        按是否有返回值Intent通信可以分为有返回值和无返回值通信,按接收对象可以分为群发消息和个体消息。

        但在通常情况下,Intent仅能传递基本的数据类型,对于复杂的数据类型,则要借助Serializable、Parcelable两个接口进行。

        (1)Intent常用用法

                下面针对网络、地图、电话、消息、电子邮件、多媒体、系统等几个方面介绍Intent的常见用法。

                1)网络相关

                         为了使用网络功能,需要拥有android.permission.INTERNET权限。与网络相关的常用Intent通信包括显示网页、Google地图、搜索等。

                         在由HTTP定义的与服务器交互的方法中,发起请求的方式有两种,即GET和POST,其中GET方式通过RUL提交数据,数据在URL中可以看到,无法保证私密性,且提交的数据最多只能为1024字节;而POST方式是将数据放置在HTML HEADER中提交,且在数据长度上没有限制,通常用于传递敏感数据。

                         在Intent中目前尚不支持POST方式提交数据,仅支持GET方式。为了打开网址,其采用的ACTION为ACTION_VIEW,方法如下:

                                 Uri uri=Uri.parse("http://www.163.com:);

                                 Intent it=new Inent(Intent.ACTION_VIEW,uri);

                                 startActivity(it);

                         如果希望传递敏感数据,在WebView中采用的方法如下:

                                 public void postUrl( String url, byte[] postData);

                         在众多的应用中找到自己想要的应用。就需要用到搜索功能。实现搜索的方法如下:

                                 Uri uri=Uri.parse("market://seatch?q=pname:com.miaozl.hello");

                                 Intent intent=new Intent(Intent.ACTION_VIEW, uri);

                                 startActivity(intent);

                         在网络中搜索相关信息,实现的方法如下:

                                 Intent intent=new Intent();

                                 intent.setAction(Intent.ACTION_WEB_SEARCH);

                                 intent.putExtra(SearchManager.QUERY, "android123")

                                 startActivity(intent);

                2)地图相关

                         为了显示Google地图,需要提供地理位置的经纬度信息,注意,在进行定位时,由于定位算法的原因,移动终端至少要能捕获3颗卫星的数据,才能提供基本的定位,根据GPS芯片的性能和场景的不同,实际GPS芯片能捕获到的卫星数量差异较大,下面是显示Google地图的方法:

                                 Uri uri=Uri.parse("geo:38.899533, -77.036476");

                                 Intent it=new Intent(Intent.ACTION_VIEW,uri);

                                 startActivity(it);

                        采用GPS导航的目的通常在于希望能找到两点间的最佳路线,这种查找最佳路线的过程在数学上称为路径规划,下面是GoogleMap路径规划的方法:

                                 Uri uri=Uri.parse(http://maps.google.com/maps?f=d&saddr=srartLat%20startLng&daddr=engLat%20endLng&hl=en);

                                 Intent it=new Intent(Intent.ACTION_VIEW,uri);

                                 startActivity(it);

                3)电话相关

                        作为移动终端最基本的功能,通话自然是必不可少的,与通话相关的还有电话薄等功能,下面是进入电话薄的方法:

                                Intent intent=new Intent();

                                intent.setAction(Intent.ACTION_VIEW);

                                intent.setData(People.CONTENT_URI);

                                startActivity(intent);

                        如果希望查看具体的联系人,需要制定相关联系人的ID,方法如下:

                                Uri personUri=ContextUris.withAppendedId(People.CONTENT_URI,ID);

                                Intent intent=new Intent();

                                intent.setAction(Intent.ACTION_VIRW);

                                intent.setData(persionUri);

                                startActivity(intent);

Android通信篇

标签:android开发   通信   

原文地址:http://blog.csdn.net/u011014707/article/details/46558165

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!