简单介绍

当没有 Wi-Fi 訪问点或互联网訪问时,Android* 应用可能须要对等连接在两台或多台 Android* 设备之间建立连接。 比方,文件共享应用和多人游戏。

该功能可使用 NFC、蓝牙或 Wi-Fi 对等技术来实施。 特定案例中的首选技术须要依据所需的距离、连接速度、功耗和独特的技术特性来决定。

本文将对 Wi-Fi 对等技术进行评估。 Wi-Fi 对等(P2P)支持具备适当应用的 Android 4.0 或更高版本号在没有接入点的情况下通过 Wi-Fi 彼此连接。

Android Wi-Fi P2P 框架符合 Wi-Fi Direct 标准。

普通情况下,Wi-Fi Direct 支持更快的速度和更远的距离,可是所需的功耗比蓝牙连接高。

实施

本文将重点介绍在两台 Android 设备之间建立套接字连接的基本步骤。

如要使用 Wi-Fi P2P,应用必须将最低软件开发套件版本号正确设置为 14,并在 AndroidManifest.xml 文件里申请例如以下许可:

  • ACCESS_WIFI_STATE
  • CHANGE_WIFI_STATE
  • ACCESS_NETWORK_STATE
  • CHANGE_NETWORK_STATE
  • INTERNET

应用须要调用 WifiP2pManager 对象的 initialize() 方法,以使用
Wi-Fi P2P 框架注冊应用。 这样的方法必须在运行 Wi-Fi P2P 操作前调用。

应用须要为下面 Wi-Fi P2P intent 创建和注冊广播接收器:

  • WIFI_P2P_CONNECTION_CHANGED_ACTION
  • WIFI_P2P_PEERS_CHANGED_ACTION
  • WIFI_P2P_STATE_CHANGED_ACTION
  • WIFI_P2P_THIS_DEVICE_CHANGED_ACTION

运行以上步骤后,应用将可以在 WifiP2pManager 对象中调用 Wi-Fi P2P 方法,并接收 Wi-Fi P2P intent。

大部分的 WifiP2pManager 方法是异步的,因此开发者须要向每种方法调用提供 listener 来获取状态和结果。

如要发现可用的 Wi-Fi P2P 设备。须要调用 WifiP2pManager 对象的 discoverPeers() 方法。

发现流程将会一直运行,知道设备打开 Wi-Fi P2P 连接或调用 stopPeerDiscovery 方法。

当应用接收 WIFI_P2P_PEERS_CHANGED_ACTION intent 时。使用 WifiP2pManager 对象的 requestPeers()方法将可以获得发现的对等设备列表。

如要连接获取的对等设备列表中的某台设备,须要准备包括完整 deviceAddress 字段的 WifiP2pConfig对象,并调用
WifiP2pManager 对象的 connect() 方法。

成功连接后。通过调用 WifiP2pManager 对象的 requestConnectInfo() 方法获取设备
IP 地址。

然后。使用 IP 地址创建一个 Socket 和 ServerSocket 对象。 使用标准的套接字接口运行通信。

下面是调用方法并接收 intent 以准备为 Wi-Fi P2P 设备建立连接的图表:

如要在两台 Android 设备之间建立 Wi-Fi P2P 连接。至少须要运行这些步骤。 应用应为全部 Wi-Fi P2P intent 和 listener 实施处理程序,以充分响应不同的事件,如连接丢失或 Wi-Fi 禁用。 请參阅 Android 文档。了解很多其它信息。

英特尔 Android* 开发者指南上的对等应用的更多相关文章

  1. Android开发者指南-方位传感器-Position Sensor

    Android开发者指南-方位传感器-Position Sensor 转载自:http://blog.sina.com.cn/s/blog_48d4913001010zsu.html Position ...

  2. Android开发者指南(9) —— ProGuard

    转: 前言 本章内容为开发者指南(Dev Guide)/Developing/Tools/ProGuard,本章内容为"混淆器",版本为Android3.0 r1,翻译来自:&qu ...

  3. Android开发者指南-用户界面-拖放-Drag and Drop[原创译文]

      英文原文:http://developer.android.com/guide/topics/ui/drag-drop.html 版本:Android 4.0 r1 译者注:黄色底色为未决译文 快 ...

  4. 转 Android开发者指南-Manifest.xml-<supports-screens

    <supports-screens> 版本:Android 3.2 语法: <supports-screensandroid:resizeable=["true" ...

  5. 面向英特尔® x86 平台的 Unity* 优化指南: 第 1 部分

    原文地址 目录 工具 Unity 分析器 GPA 系统分析器 GPA 帧分析器 如要充分发挥 x86 平台的作用,您可以在项目中进行多种性能优化,以最大限度地提升性能. 在本指南中,我们将展示 Uni ...

  6. Android开发者必知的开发资源

    推荐书籍 我推荐下面两本书: The Busy Coder’s Guide to Android Development <The Busy Coder’s Guide to Android D ...

  7. (转载)Android开发者必知的开发资源

    (转载)http://www.importnew.com/3988.html 随着Android平台市场份额的持续猛增 ,越来越多的开发者开始投入Android应用程序的开发大潮.如果您是一位2013 ...

  8. [转][赞]Android开发者必知的开发资源

    英文原文:Bongzimo  翻译: ImportNew-黄小非 随着Android平台市场份额的持续猛增 ,越来越多的开发者开始投入Android应用程序的开发大潮.如果您是一位2013年刚刚入行的 ...

  9. Android 开发者必知的开发资源

    英文原文:Bongzimo  翻译: ImportNew-黄小非 译文链接:http://www.importnew.com/3988.html Android 开发者必知的开发资源 随着Androi ...

随机推荐

  1. JZYZOJ1454 NOIP2015 D2T3_运输计划 二分 差分数组 lca tarjan 树链剖分

    http://172.20.6.3/Problem_Show.asp?id=1454 从这道题我充分认识到我的脑子里好多水orz. 如果知道了这个要用二分和差分写,就没什么思考上的难点了(屁咧你写了一 ...

  2. 【20181020T1】蛋糕

    题面 [正解] 显然先按a排个序,然后用b乱搞 第一问用D开头的定理求最长下降子序列 第二问乱搞 for (int i=1;i<=n;i++) { int* t=upper_bound(f+1, ...

  3. 【图论】Network of Schools

    [POJ1236]Network of Schools Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 18969   Acc ...

  4. 【线段树】POJ3225-Help with Intervals

    ---恢复内容开始--- [题目大意] (直接引用ACM神犇概括,貌似是notonlysucess?) U:把区间[l,r]覆盖成1 I:把[-∞,l)(r,∞]覆盖成0 D:把区间[l,r]覆盖成0 ...

  5. Perl正则表达式

    perl正则表达式就是通过一串特别设计的字符串,可以按照我们的需求匹配.替换.转化目标字符串.本文主要是对一些常用的正则表达以及语法的总结以及举例,供广大喜爱Perl的同学交流学习. 操作符: =~ ...

  6. codevs 2185 最长公共上升子序列--nm的一维求法

    2185 最长公共上升子序列  时间限制: 1 s  空间限制: 32000 KB  题目等级 : 钻石 Diamond 题目描述 Description 熊大妈的奶牛在小沐沐的熏陶下开始研究信息题目 ...

  7. [转]Spring Security学习总结二

    原文链接: http://www.blogjava.net/redhatlinux/archive/2008/08/20/223148.html http://www.blogjava.net/red ...

  8. Educational Codeforces Round 9 F. Magic Matrix 最小生成树

    F. Magic Matrix 题目连接: http://www.codeforces.com/contest/632/problem/F Description You're given a mat ...

  9. TJSONTableObject跨平台解析JSON

    TJSONTableObject跨平台解析JSON USES SynCrossPlatformJSON TSQLRecordPeoplePersistent = class(TPersistent) ...

  10. Android 通过URL scheme 实现点击浏览器中的URL链接,启动特定的App,并调转页面传递参数

    点击浏览器中的URL链接,启动特定的App. 首先做成HTML的页面,页面内容格式如下: <a href="[scheme]://[host]/[path]?[query]" ...