Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在两台android设备之间通过WiFi直接发送字符串_Java_Android_Wifi Direct_Wifimanager_Wifip2p - Fatal编程技术网

Java 在两台android设备之间通过WiFi直接发送字符串

Java 在两台android设备之间通过WiFi直接发送字符串,java,android,wifi-direct,wifimanager,wifip2p,Java,Android,Wifi Direct,Wifimanager,Wifip2p,现在已经一个多月了,我尝试在两台android设备之间使用WiFi直接发送一个字符串,但我仍然很难理解我做错了什么 我环顾了论坛,但他们往往没有给出太多关于如何实现我想要的东西的细节 我还浏览了android开发者网站上的两个指南: 我使用的是一个活动-ActivityConnection,其中我根据用户之前选择发送还是接收字符串来切换视图的可见性 在客户端,discoverPeers()立即查找任何打开WiFi Direct的设备,并将其显示在列表视图上。一旦用户选择了一个设备并按下

现在已经一个多月了,我尝试在两台android设备之间使用WiFi直接发送一个字符串,但我仍然很难理解我做错了什么

我环顾了论坛,但他们往往没有给出太多关于如何实现我想要的东西的细节

我还浏览了android开发者网站上的两个指南:

我使用的是一个活动-
ActivityConnection
,其中我根据用户之前选择发送还是接收字符串来切换视图的可见性

  • 在客户端,
    discoverPeers()
    立即查找任何打开WiFi Direct的设备,并将其显示在
    列表视图上。一旦用户选择了一个设备并按下发送按钮,连接就会自动建立并发送字符串

  • 在服务器端,使用my
    AsyncServerTask
    类立即启动服务器。在那里,它等待客户端连接并检索其发送的字符串

我的主要问题是,在选择设备并点击发送按钮后,服务器端没有收到任何东西。 我的第二个问题是,有时设备没有被发现,listview保持为空

我错过什么了吗?或者可能做错了什么

这是我目前的密码。 为了便于阅读,我冒昧地去掉了我认为不符合上下文的任何一行

活动连接

公共类ActivityConnection扩展AppCompatActivity实现NewPeerListener{
公共静态最终字符串连接\u ACTOR=“ACTOR”;
公共静态最终字符串SEND_INFO=“SEND”;
公共静态最终字符串RECEIVE\u INFO=“RECEIVE”;
ListView listViewDevices;
私人意向过滤器意向过滤器;
私人WifiP2pManager经理;
私有WifiP2pManager.Channel;
专用wifidirectbroadcasting接收机;
公共列表设备;
私有wifip2p设备选择设备;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
confirm.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
连接到所选设备();
}
});
Intent=this.getIntent();
stringactor=intent.getStringExtra(连接\u actor);
this.intentFilter=新的intentFilter();
this.intentFilter.addAction(WifiP2pManager.WIFI\u P2P\u STATE\u CHANGED\u ACTION);
this.intentFilter.addAction(WifiP2pManager.WIFI\u P2P\u PEERS\u CHANGED\u ACTION);
this.intentFilter.addAction(WifiP2pManager.WIFI\u P2P\u CONNECTION\u CHANGED\u ACTION);
this.intentFilter.addAction(WifiP2pManager.WIFI\u P2P\u此设备\u已更改\u操作);
this.manager=(WifiP2pManager)this.getSystemService(Context.WIFI\u P2P\u服务);
this.channel=this.manager.initialize(this,this.getMainLooper(),null);
this.receiver=新的WiFiDirectBroadcastReceiver(this.manager,this.channel,this);
this.listDevices=newArrayList();
if(参与者等于(发送信息)){
DeviceAdapter=新的DeviceAdapter(ActivityConnection.this,R.layout.device_项,this.listDevices);
这个.listViewDevices.setAdapter(适配器);
this.listViewDevices.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
selectedDevice=listDevices.get(位置);
}
});
这个。discoverPeers();
}
else if(actor.equals(RECEIVE_INFO)){
新建ServerAsyncTask(this.execute();
}
}
@凌驾
受保护的void onResume(){
super.onResume();
this.receiver=新的WiFiDirectBroadcastReceiver(this.manager,this.channel,this);
this.registerReceiver(this.receiver,this.intentFilter);
}
@凌驾
受保护的void onPause(){
super.onPause();
本.未注册接收人(本.接收人);
}
已接收公共无效结果(字符串结果){
Toast.makeText(ActivityConnection.this,“Received!:)”,Toast.LENGTH\u SHORT.show();
}
私有的void discoverPeers(){
manager.discoverPeers(通道,新的WifiP2pManager.ActionListener(){
@凌驾
成功时的公共无效(){
//发现过程成功了
}
@凌驾
公共失效失效失效(内部原因){
//发现过程没有成功
Toast.makeText(ActivityConnection.this,“发现过程未成功。请验证WiFi Direct是否处于活动状态。”,Toast.LENGTH_LONG).show();
}
});
}
连接到所选设备的专用void(){
WifiP2pConfig config=新的WifiP2pConfig();
config.deviceAddress=this.selectedDevice.deviceAddress;
this.manager.connect(this.channel,config,新的WifiP2pManager.ActionListener(){
@凌驾
成功时的公共无效(){
//发送字符串
意向服务意向=新意向(ActivityConnection.this,TransferService.class);
serviceIntent.setAction(TransferService.ACTION\u发送\u字符串);
serviceIntent.putExtra(TransferService.EXTRAS_GROUP_OWNER_ADDRESS,getMacAddress());
serviceIntent.putExtra(TransferService.EXTRAS\u GROUP\u OWNER\u PORT,8090);
startService(serviceIntent);
onBackPressed();
}
@凌驾
公共失效失效失效(内部原因){
Toast.makeText(ActivityConnection.this,“连接失败。重试。”,Toast.LENGTH_SHORT.show();
}
});