英特尔 Android* 开发者指南上的对等应用
简单介绍
当没有 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* 开发者指南上的对等应用的更多相关文章
- Android开发者指南-方位传感器-Position Sensor
Android开发者指南-方位传感器-Position Sensor 转载自:http://blog.sina.com.cn/s/blog_48d4913001010zsu.html Position ...
- Android开发者指南(9) —— ProGuard
转: 前言 本章内容为开发者指南(Dev Guide)/Developing/Tools/ProGuard,本章内容为"混淆器",版本为Android3.0 r1,翻译来自:&qu ...
- Android开发者指南-用户界面-拖放-Drag and Drop[原创译文]
英文原文:http://developer.android.com/guide/topics/ui/drag-drop.html 版本:Android 4.0 r1 译者注:黄色底色为未决译文 快 ...
- 转 Android开发者指南-Manifest.xml-<supports-screens
<supports-screens> 版本:Android 3.2 语法: <supports-screensandroid:resizeable=["true" ...
- 面向英特尔® x86 平台的 Unity* 优化指南: 第 1 部分
原文地址 目录 工具 Unity 分析器 GPA 系统分析器 GPA 帧分析器 如要充分发挥 x86 平台的作用,您可以在项目中进行多种性能优化,以最大限度地提升性能. 在本指南中,我们将展示 Uni ...
- Android开发者必知的开发资源
推荐书籍 我推荐下面两本书: The Busy Coder’s Guide to Android Development <The Busy Coder’s Guide to Android D ...
- (转载)Android开发者必知的开发资源
(转载)http://www.importnew.com/3988.html 随着Android平台市场份额的持续猛增 ,越来越多的开发者开始投入Android应用程序的开发大潮.如果您是一位2013 ...
- [转][赞]Android开发者必知的开发资源
英文原文:Bongzimo 翻译: ImportNew-黄小非 随着Android平台市场份额的持续猛增 ,越来越多的开发者开始投入Android应用程序的开发大潮.如果您是一位2013年刚刚入行的 ...
- Android 开发者必知的开发资源
英文原文:Bongzimo 翻译: ImportNew-黄小非 译文链接:http://www.importnew.com/3988.html Android 开发者必知的开发资源 随着Androi ...
随机推荐
- [BZOJ1494]生成树计数
[BZOJ1494] [NOI2007]生成树计数 Description 最近,小栋在无向连通图的生成树个数计算方面有了惊人的进展,他发现:·n个结点的环的生成树个数为n.·n个结点的完全图的生成树 ...
- 【数据结构】The Falling Leaves(6-10)
[UVA699]The Falling Leaves 算法入门经典第6章例题6-10(P159) 题目大意:有一颗二叉树,求水平位置的和. 试题分析:乱搞就可以过,将树根节点的pos记为0,向左-1, ...
- 【FFT】OpenJ_POJ - C17H - Reverse K-th Problem
对每个位置i处理出以其为结尾,且比a(i)大的数有j个的前缀个数,记成一个数组l:同理,处理出以其为开头,且比a(i)大的数有j个的后缀的个数,记成一个数组r. 整个序列中比a(i)大的数的个数的数组 ...
- 【概率论】hdu5985 Lucky Coins
kill(i,j)表示第i种硬币在第j轮或者之前就死光的概率,它等于(1-pi^j)^num(i) rev(i,j)表示第i种硬币在j轮后仍然存活的概率,它等于1-kill(i,j) 然后对每种硬币i ...
- 【状压DP】BZOJ2734-[HNOI2012]集合选数
已经八月份了药丸,开始肝作业并且准备高考啦!! [题目大意] <集合论与图论>这门课程有一道作业题,要求同学们求出{1, 2, 3, 4, 5}的所有满足以 下条件的子集:若 x 在该子集 ...
- CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解(转)
摘要:KVM虚拟机网络配置的两种方式:NAT方式和Bridge方式.Bridge方式的配置原理和步骤.Bridge方式适用于服务器主机的虚拟化.NAT方式适用于桌面主机的虚拟化. NAT的网络结构图: ...
- WinCE6.0 2012年补丁下载地址
Windows CE6.0 2012年补丁包WinCEPB60-121231-Product-Update-Rollup-Armv4I.msi下载地址:http://www.microsoft.com ...
- [Linux] linux文件系统学习
linux系统支持很多种文件系统. 1. 如何确认当前系统挂载了哪些文件系统? 使用mount命令可以查看当前系统上已经挂载了哪些文件系统, lqt@lqt-ThinkPad-T420:~$ moun ...
- 折腾mysql的小坑记录
1.安装 CentOS下先卸载自带的mariadb rpm -qa | grep mariadb mariadb-libs--.el7_2.x86_64 mariadb--.el7_2.x86_64 ...
- 修改centos7/osx的MAC地址
change MAC Address in CentOS 7: nano /etc/sysconfig/network-scripts/ifcfg-ens160 systemctl restart n ...