wifi direct开发:API地址:http://www.androidside.com/docs/reference/android/net/wifi/p2p/WifiP2pManager.ChannelListener.html
http://wiki.eoe.cn/page/Connecting_with_Wi-Fi_Direct.html
1:首先要确保应用程序能够访问硬件,并且设备支持Wi-Fi Direct协议。
2:以上条件满足创建WifiP2pManager对象,注册广播发送出去。然后可以使用wifi direct API
以上所需要的权限以及SDK版本:
<uses-sdk android:minSdkVersion="14" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
需要实现的主要接口:
一:PeerListListener-->实现的主要方法 onPeersAvailable
/**
* 实现PeerListListener接口
* 当发现可用的同行列表调用的方法
*由注册了action WIFI_P2P_PEERS_CHANGED_ACTION意图转到实现了PeerListListener接口的类上。
*/
@Override
public void onPeersAvailable(WifiP2pDeviceList peerslist) {
if (progressDialog != null && progressDialog.isShowing())
{
progressDialog.dismiss();
}
peers.clear();
peers.addAll(peerslist.getDeviceList());
((WiFiPeerListAdapter) getListAdapter()).notifyDataSetChanged();
if (peers.size() == 0)
{
Log.d(TAG, "No devices found");
return;
}
}
2:ChannelListener;当channel(通道)丢失的时候调用的接口
@Override
public void onChannelDisconnected() {
if (manager != null && !retryChannel) {
Toast.makeText(this, "Channel lost. Trying again",
Toast.LENGTH_LONG).show();
//TODO 清空自身,与peers
resetData();
retryChannel = true;
manager.initialize(this, getMainLooper(),this);
} else {
Toast.makeText(
this,
"Severe! Channel is probably lost premanently. Try Disable/Re-Enable P2P.",
Toast.LENGTH_LONG).show();
}
}
3:anction WIFI_P2P_THIS_DEVICE_CHANGED_ACTION 意图:看本机设备使用具有wifidirect功能,具有则显示出device一些信息
/**
*(WifiP2pDevice) intent.getParcelableExtra(WifiP2pManager.EXTRA_WIFI_P2P_DEVICE)-->本机device信息
*
*/
if (WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION.equals(action)) {
activity.updateThisDevice((WifiP2pDevice) intent
.getParcelableExtra(WifiP2pManager.EXTRA_WIFI_P2P_DEVICE));
Log.d(TAG, "WIFI_P2P_THIS_DEVICE_CHANGED_ACTION 显示自己wifip2p信息");
}
4:ConnectionInfoListener接口 设备之间连接调用的接口
由action:WIFI_P2P_CONNECTION_CHANGED_ACTION 意图转到实现了ConnectionInfoListener接口的类上
程序就会调用onConnectionInfoAvailable这个方法执行相应操作
if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) {
if (manager == null) {
return;
}
NetworkInfo networkInfo = (NetworkInfo) intent
.getParcelableExtra(WifiP2pManager.EXTRA_NETWORK_INFO);
if (networkInfo.isConnected()) {
// we are connected with the other device, request connection
// info to find group owner IP
//
// DeviceDetialFragment fragment = (DeviceDetialFragment)
// activity
// .getFragmentManager()
// .findFragmentById(R.id.frag_detail);
// TODO 连接成功 执行activity(实现ConnectionInfoListener)onConnectionInfoAvailable方法
manager.requestConnectionInfo(channel,
(ConnectionInfoListener) activity);//-->
Log.d(TAG, "WIFI_P2P_CONNECTION_CHANGED_ACTION 连接");
} else {
// It's a disconnect 连接不成功,清除信息
activity.resetData();
Toast.makeText(activity, "连接失败", Toast.LENGTH_LONG).show();
}
}
二:需要调用的主要类:
WifiP2pManager;提供wifi对等连接,运行设备发现同行,设置连接的同行的查询列表
WifiP2pManager.requestPeers(channel, (PeerListListener) activity.getFragmentManager().findFragmentById(R.id.frag_list));-->请求当前的peers信息
Channel:应用程序连接到 wifi p2p需要一个通道作为参数 channel为这个参数-->获取方法manager.initialize(this, getMainLooper(), null);
WifiP2pConfig:将device设备信息转换为WifiP2pConfig对象,进行连接的时候会需要到
// 转为为WifiP2pConfig对象
private WifiP2pConfig createWifiP2pConfig(WifiP2pDevice device) {
WifiP2pConfig config = new WifiP2pConfig();
config.deviceAddress = device.deviceAddress;
config.wps.setup = WpsInfo.PBC;
return config;
}
/**
* 连接指定peers操作
*
* @param config(将peers转换为WifiP2pConfig做为参数)
*/
public void connect(WifiP2pConfig config) {
/**
* connect 与指定的p2p进行连接
*/
manager.connect(channel, config, new ActionListener() {
@Override
public void onSuccess() {
/**
* TODO 成功连接 交给action处理 receiver
* WIFI_P2P_CONNECTION_CHANGED_ACTION
*/
}
@Override
public void onFailure(int reason) {
Toast.makeText(MainActivity.this, "Connect failed. Retry.",
Toast.LENGTH_SHORT).show();
}
});
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
WifiP2p.rar (66个子文件)
WifiP2p
bin
classes.dex 564KB
res
drawable-hdpi
ic_launcher.png 6KB
drawable-xhdpi
ic_launcher.png 9KB
drawable
machine.png 1KB
drawable-xxhdpi
ic_launcher.png 17KB
drawable-mdpi
ic_launcher.png 3KB
jarlist.cache 120B
dexedLibs
android-support-v4-cfe137df1f051360fa185ec61b81991e.jar 185KB
classes
com
example
wifip2p
MainActivity.class 12KB
BuildConfig.class 347B
MainActivity$3.class 1KB
MainActivity$2.class 2KB
MainActivity$1.class 786B
R$layout.class 477B
R$id.class 698B
R$drawable.class 441B
MainActivity$WiFiPeerListAdapter$1.class 2KB
R$dimen.class 464B
R$attr.class 343B
R$menu.class 391B
WiFiDirectBroadcastReceiver.class 3KB
R.class 683B
MainActivity$4.class 2KB
MainActivity$5.class 1KB
MainActivity$WiFiPeerListAdapter.class 4KB
MainActivity$6.class 1KB
R$string.class 611B
FileTransferService.class 4KB
MainActivity$2$1.class 1KB
utils
FindPeers.class 2KB
FileServerAsyncTask.class 4KB
R$style.class 434B
resources.ap_ 44KB
WifiP2p.apk 240KB
AndroidManifest.xml 1KB
res
drawable-ldpi
values-v11
styles.xml 334B
menu
main.xml 263B
values-v14
styles.xml 391B
drawable-hdpi
ic_launcher.png 7KB
drawable-xhdpi
ic_launcher.png 12KB
drawable
machine.png 4KB
drawable-xxhdpi
ic_launcher.png 24KB
values
strings.xml 434B
styles.xml 697B
dimens.xml 220B
values-sw720dp-land
dimens.xml 277B
drawable-mdpi
ic_launcher.png 4KB
values-sw600dp
dimens.xml 203B
layout
row_devices.xml 1KB
activity_main.xml 2KB
row_devices1.xml 2KB
proguard-project.txt 781B
ic_launcher-web.png 50KB
assets
gen
com
example
wifip2p
BuildConfig.java 161B
R.java 3KB
src
com
example
wifip2p
WiFiDirectBroadcastReceiver.java 3KB
FileTransferService.java 3KB
MainActivity.java 14KB
utils
FindPeers.java 2KB
FileServerAsyncTask.java 2KB
.project 843B
.classpath 475B
project.properties 563B
AndroidManifest.xml 1KB
readme.txt 5KB
libs
android-support-v4.jar 473KB
共 66 条
- 1
资源评论
___小不点
- 粉丝: 7
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功