android wifip2pmanager,的Android WifiP2pManager createGroup總是失敗,佔線狀態

manager.requestGroupInfo(channel, new WifiP2pManager.GroupInfoListener() {

public void onGroupInfoAvailable(WifiP2pGroup group){

if (group != null) {

manager.removeGroup(channel, new WifiP2pManager.ActionListener() {

@Override

public void onSuccess() {

manager.createGroup(channel, new WifiP2pManager.ActionListener() {

@Override

public void onSuccess() {

}

@Override

public void onFailure(int reason) {

Debug.d("" + reason);

}

});

}

@Override

public void onFailure(int reason) {

Debug.d("" + reason);

}

});

} else {

manager.createGroup(channel, new WifiP2pManager.ActionListener(){

@Override

public void onSuccess() {

}

@Override

public void onFailure(int reason) {

Debug.d("" + reason);

}

});

}

}

});

它總是失敗,原因代碼BUSY。我在調試模式下運行它,發現返回的WifiP2pGroup對象始終爲空。然而,它與BUSY原因失敗。我在Application類中創建並保留了WifiP2pManager和Channel對象,並將它們作爲單例在整個應用程序中使用。這可能是問題嗎?我無法在網上找到答案。

2017-06-16

AJA

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android中的WiFi通信可以通过WiFi Direct或者Socket实现。 1. WiFi Direct通信 WiFi Direct是一种点对点的无线网络连接技术,可以直接在两个设备之间创建连接,不需要使用中介设备。在Android中,可以使用WifiP2pManager API来管理WiFi Direct连接。以下是一个简单的WiFi Direct通信示例: (1)在AndroidManifest.xml文件中添加以下权限: ``` <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.INTERNET" /> ``` (2)创建WiFi Direct连接 ``` WifiP2pManager wifiP2pManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE); WifiP2pManager.Channel channel = wifiP2pManager.initialize(this, getMainLooper(), null); wifiP2pManager.discoverPeers(channel, new WifiP2pManager.ActionListener() { @Override public void onSuccess() { // 发现Peers成功 } @Override public void onFailure(int reason) { // 发现Peers失败 } }); ``` (3)连接到其他设备 ``` private WifiP2pManager.ConnectionInfoListener connectionListener = new WifiP2pManager.ConnectionInfoListener() { @Override public void onConnectionInfoAvailable(WifiP2pInfo info) { if (info.groupFormed && info.isGroupOwner) { // 作为group owner处理连接 } else if (info.groupFormed) { // 作为client处理连接 } } }; wifiP2pManager.connect(channel, config, new WifiP2pManager.ActionListener() { @Override public void onSuccess() { // 连接成功 } @Override public void onFailure(int reason) { // 连接失败 } }); ``` 2. Socket通信 Socket是一种通用的网络通信协议,可以在不同的网络之间进行通信。在Android中,可以使用Socket实现WiFi通信。以下是一个简单的Socket通信示例: (1)在AndroidManifest.xml文件中添加以下权限: ``` <uses-permission android:name="android.permission.INTERNET" /> ``` (2)创建Socket连接 ``` String host = "192.168.1.100"; int port = 12345; Socket socket = new Socket(host, port); ``` (3)发送和接收数据 ``` OutputStream outputStream = socket.getOutputStream(); outputStream.write("Hello, World!".getBytes()); InputStream inputStream = socket.getInputStream(); byte[] buffer = new byte[1024]; int len = inputStream.read(buffer); String message = new String(buffer, 0, len); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值