Android WiFiDirect 一个jar包搞定一切
来源:互联网 发布:淘宝客提现时间 编辑:程序博客网 时间:2024/05/16 15:56
概要:
本文主要介绍基于Android原生WiFidirect封装的jar包。其中实现的要点有:
1,IP列表管理;
2,一行代码配置WiFidirect;
3,实现了文本,文件,buffer的通信传递;
4,自动连接与恢复(当应用强制退出后,再次进入的自动连接过程)。
以上4点都是原生WiFidirect未实现的,相信对想基于WiFidirect进行开发的朋友会有所帮助。
想必对WiFidirect有些了解的朋友都知道,WiFidirect在Android4.0后得以支持,并且传递数度,距离都远好于WiFi热点与蓝牙,并且开启WiFidirect不影响正常的wifi上网。做近场通信绝对是个好东西!
为了方便以后的开发,这里本人将整个WiFidirect通信工作从WiFidirect的开启、搜索、连接、传递信息都进行了封装。基本做到了在项目中以极少的代码较好的使用WiFidirect进行通信。这里笔者也分享给大家。
正文:
1,系统功能描述:
本SDK最终目的就是完成通信,下图能很好的说明(图中结构仅供参考)。
2,接入与配置:
a,下载SDKjia包,地址:http://download.csdn.net/detail/coycleipenghui/9634551;
b,导入到项目中(FriendMusic为demo项目);
c,初始化配置;
(1)WifiDirectManager.getInstance().init() // 初始化SDK
(2)WifiDirectManager.getInstance().setFileSaveDir() //设置缓存路径
具体代码如下:
WifiDirectManager.getInstance().init(getActivity(), new OnPeersDataChangeListener() {//设备变化通知接口 @Override public void onPeersDataChange() { //周围设备发生改变 } }, new OnGroupListChangeListener() { @Override public void onGroupListChange() { //组内设备(已连接设备)发生改变 } }, new OnReceiveDataListener() {//数据接收接 其中MyWifiP2pDevice 是指该数据来源设备 @Override public void onReceiveText(final String text, final MyWifiP2pDevice myWifiP2pDevice) { //收到文本消息 } @Override public void onReceiveByte(final byte[] bytes, MyWifiP2pDevice myWifiP2pDevice) { //收到byte数组 } @Override public void onReceiveFile(final String s,final MyWifiP2pDevice myWifiP2pDevice,final String tag) { //收到文件 s为本地文件存储路径 } }); WifiDirectManager.getInstance().setFileSaveDir(Environment.getExternalStorageDirectory()+"/FriendMusic/musicCache");//设置文件缓存路径
3,使用:
开启WiFidirect:
WifiDirectManager.getInstance().open();
关闭WiFidirect:
WifiDirectManager.getInstance().close();
搜索周围设备:
WifiDirectManager.getInstance().startSearch();//搜索结果将通过OnPeersDataChangeListener监听器触发
在OnPeersDataChangeListener触发后即可调用下面方法更新设备列表。
//获取周围设备:
WifiDirectManager.getInstance().getPeers();//返回值是ArrayList<MyWifiDirectDevice> 列表
获取组中设备
WifiDirectManager.getInstance().getGroup();//返回值是ArrayList<MyWifiDirectDevice> 列表
连接设备
在搜索完成后会得到周围设备列表对象,这里传入任意一设备对象即可邀请其加入组。
WifiDirectManager.getInstance().addGroups(myWifiP2pDevice);
发送文本消息:
WifiDirectManager.getInstance().sendTextByDevice(wifiP2pDevice,"msg");//传入对方设备对象以及文本类容
发送文件:
WifiDirectManager.getInstance().sendFileByDevice(wifiP2pDevice,"file_path","filetag");//传入设备对象,文件路径,以及文件标签。其中文件标签是为了方面接收方在收到文件时可以对文件做基本的判断,由用户自定义。
发送byte数组:
WifiDirectManager.getInstance().sendBufferByDevice(wifiP2pDevice,new byte[10]);
4,总结:
根据本SDK本人制作了一个demo项目供大家参考。基于WiFidirect的音乐播放器,在连接后能够查看好友的手机音乐歌单,能控制对方设备进行播放(基于json文本传输),并且能在自己设备上播放好友设备的歌曲(基于文件传输)。个人觉得也是一款好玩的音乐app,适合好友之间一起玩。详情可查看下一篇博客 基于WiFidirect的音乐播放器
下载地址:https://github.com/coyclei/FriendMusic
笔者能力有限,SDK中难免会出现一些错误,还望大家多多包涵,并请及时向我反馈交流。谢谢!
- Android WiFiDirect 一个jar包搞定一切
- 终于搞定啦,共享一个jar包用于图片搜索
- android中WifiDirect
- Android一行代码搞定RecyclerView的一切!
- Android 4.0新增WiFiDirect功能
- Android 4.0新增WiFiDirect功能
- Android 4.0新增WiFiDirect功能
- Android 4.0新增WiFiDirect功能
- Android 4.0新增WiFiDirect功能
- java.lang.NoSuchFieldError: deferredExpression 原因是web-inf lib下有多个jstl jar包的原因 删除一个重新启动 一切ok !
- Android利用ant将多个jar包合并成一个jar包
- Android反编译的一个注意细节----区分jar包
- Android 如何生成一个aar或者JAR包
- Android导出一个JAR库/Android如何将程序打成jar包/android 打包
- Android导出一个JAR库 Android如何将程序打成jar包 android 打包...
- 关于jar包的一切——java笔记
- Android Studio jar包引用jar包
- android中wifidirect的操作学习
- 创建和销毁对象(2)——遇到多个构造器参数是要考虑用构建器
- Docker基础: Linux内核之Cgroups(1)
- ARM工具链中的概念——EABI
- JavaScript 贪吃蛇小游戏
- LeetCode: Search a 2D Matrix II
- Android WiFiDirect 一个jar包搞定一切
- Android数据通信——JSON&Gson(Android studio)
- PL/SQL for loop
- Sentry Robots, ACM/ICPC SWERC 2012, UVa12549 【二分图】
- hdu 5441 离线处理+并查集
- 顺序表应用7:最大子段和之分治递归法
- Mybatis插件原理分析(三)分页插件
- 51nod 1079 中国剩余定理
- 欢迎使用CSDN-markdown编辑器