Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.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/6/xamarin/3.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
Android wifi p2p对等点更改意图未触发_Android_Android Intent_Wifi Direct_Android Broadcastreceiver_Wifip2p - Fatal编程技术网

Android wifi p2p对等点更改意图未触发

Android wifi p2p对等点更改意图未触发,android,android-intent,wifi-direct,android-broadcastreceiver,wifip2p,Android,Android Intent,Wifi Direct,Android Broadcastreceiver,Wifip2p,我正在开发wifi p2p文件共享应用程序。但我无法发现同龄人 下面是我的活动代码 package com.neeraj8le.majorproject.activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.IntentFilter; import android.net.wifi.p2p.WifiP2pDevice; impo

我正在开发wifi p2p文件共享应用程序。但我无法发现同龄人

下面是我的活动代码

    package com.neeraj8le.majorproject.activity;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.IntentFilter;
import android.net.wifi.p2p.WifiP2pDevice;
import android.net.wifi.p2p.WifiP2pDeviceList;
import android.net.wifi.p2p.WifiP2pManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

import com.neeraj8le.majorproject.R;
import com.neeraj8le.majorproject.WiFiDirectBroadcastReceiver;

import java.util.ArrayList;
import java.util.List;

public class SelectPeerActivity extends AppCompatActivity{

    WifiP2pManager mManager;
    WifiP2pManager.Channel mChannel;
    BroadcastReceiver mReceiver;
    IntentFilter mIntentFilter;
    ArrayAdapter<String> wifiP2pArrayAdapter;
    ListView listView;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_select_peer);

        listView = findViewById(R.id.list_view);

        wifiP2pArrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1);
        listView.setAdapter(wifiP2pArrayAdapter);

        mIntentFilter = new IntentFilter();
        mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION);
        mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION);
        mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION);
        mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION);

        mManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
        mChannel = mManager.initialize(this, getMainLooper(), null);
        mReceiver = new WiFiDirectBroadcastReceiver(mManager, mChannel, this);



        search();


    }

    public void search()
    {
        mManager.discoverPeers(mChannel, new WifiP2pManager.ActionListener() {
            @Override
            public void onSuccess() {
                Toast.makeText(SelectPeerActivity.this, "SUCCESS", Toast.LENGTH_SHORT).show();

            }

            @Override
            public void onFailure(int reasonCode) {
                Toast.makeText(SelectPeerActivity.this, "FAILURE", Toast.LENGTH_SHORT).show();
            }
        });

    }

    public void displayPeers(WifiP2pDeviceList peerList)
    {
        wifiP2pArrayAdapter.clear();

        for(WifiP2pDevice peer : peerList.getDeviceList())
            wifiP2pArrayAdapter.add(peer.deviceName + "\n" + peer.deviceAddress);

    }


    /* register the broadcast receiver with the intent values to be matched */
    @Override
    protected void onResume() {
        super.onResume();
        registerReceiver(mReceiver, mIntentFilter);
    }

    /* unregister the broadcast receiver */
    @Override
    protected void onPause() {
        super.onPause();
        unregisterReceiver(mReceiver);
    }

}
package com.neeraj8le.majorproject.activity;
导入android.content.BroadcastReceiver;
导入android.content.Context;
导入android.content.IntentFilter;
导入android.net.wifi.p2p.wifip2p设备;
导入android.net.wifi.p2p.WifiP2pDeviceList;
导入android.net.wifi.p2p.WifiP2pManager;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.util.Log;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
导入android.widget.Toast;
进口公司neeraj8le.majorproject.R;
导入com.neeraj8le.majorproject.WiFiDirectBroadcastReceiver;
导入java.util.ArrayList;
导入java.util.List;
公共类SelectpeActivity扩展了AppCompative活动{
WifiP2pManager-mManager;
WifiP2pManager.Channel mcchannel;
广播接收机;
IntentFilter-minentfilter;
ArrayAdapter Wifip2ParrayaAdapter;
列表视图列表视图;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u select\u peer);
listView=findViewById(R.id.list\u视图);
wifiP2pArrayAdapter=newarrayadapter(这是android.R.layout.simple_list_item_1);
setAdapter(wifiP2pArrayAdapter);
minentfilter=newintentfilter();
minentfilter.addAction(WifiP2pManager.WIFI\u P2P\u STATE\u CHANGED\u ACTION);
minentfilter.addAction(WifiP2pManager.WIFI\u P2P\u PEERS\u CHANGED\u ACTION);
minentfilter.addAction(WifiP2pManager.WIFI\u P2P\u连接\u更改\u操作);
MinentFilter.addAction(WifiP2pManager.WIFI\u P2P\u此设备\u更改\u操作);
mManager=(WifiP2pManager)getSystemService(Context.WIFI\u P2P\u服务);
mChannel=mManager.initialize(这是getMainLooper(),null);
mReceiver=新的WiFiDirectBroadcastReceiver(mManager、mChannel、this);
搜索();
}
公开无效搜索()
{
mManager.discoverPeers(mcchannel,新的WifiP2pManager.ActionListener(){
@凌驾
成功时的公共无效(){
Toast.makeText(选择peepractivity.this,“SUCCESS”,Toast.LENGTH\u SHORT.show();
}
@凌驾
公共失效失效失效(int推理代码){
Toast.makeText(选择peeractivity.this,“FAILURE”,Toast.LENGTH\u SHORT.show();
}
});
}
public void displayPeers(WifiP2pDeviceList peerList)
{
wifiP2pArrayAdapter.clear();
for(WifiP2pDevice对等方:peerList.getDeviceList())
wifiP2pArrayAdapter.add(peer.deviceName+“\n”+peer.deviceAddress);
}
/*使用要匹配的目标值注册广播接收器*/
@凌驾
受保护的void onResume(){
super.onResume();
registerReceiver(mReceiver、MinentFilter);
}
/*取消注册广播接收器*/
@凌驾
受保护的void onPause(){
super.onPause();
未注册接收人(mReceiver);
}
}
这是我的广播接收机的代码

package com.neeraj8le.majorproject;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.NetworkInfo;
import android.net.wifi.p2p.WifiP2pConfig;
import android.net.wifi.p2p.WifiP2pDevice;
import android.net.wifi.p2p.WifiP2pDeviceList;
import android.net.wifi.p2p.WifiP2pManager;
import android.util.Log;
import android.widget.Toast;

import com.neeraj8le.majorproject.activity.SelectPeerActivity;

import java.util.ArrayList;
import java.util.List;


public class WiFiDirectBroadcastReceiver extends BroadcastReceiver {

    private static final String TAG = ":::::::::::::::::::::";
    private WifiP2pManager mManager;
    private WifiP2pManager.Channel mChannel;
    private SelectPeerActivity mActivity;
    List<WifiP2pDevice> mPeers;
    List<WifiP2pConfig> mConfigs;

    public WiFiDirectBroadcastReceiver(WifiP2pManager manager, WifiP2pManager.Channel channel, SelectPeerActivity activity) {
        super();
        this.mManager = manager;
        this.mChannel = channel;
        this.mActivity = activity;
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();

        if (WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION.equals(action)) {    // Check to see if Wi-Fi is enabled and notify appropriate activity
            int state = intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE, -1);
            if (state == WifiP2pManager.WIFI_P2P_STATE_ENABLED) {
                Toast.makeText(mActivity, "Wifi Direct Enabled", Toast.LENGTH_SHORT).show();
                // Wifi P2P is enabled
            } else {
                Toast.makeText(mActivity, "Wifi Direct Disabled", Toast.LENGTH_SHORT).show();
                // Wi-Fi P2P is not enabled
            }

        }
        else if (WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action))
        {
            // Call WifiP2pManager.requestPeers() to get a list of current peers
            // request available peers from the wifi p2p manager. This is an
            // asynchronous call and the calling activity is notified with a
            // callback on PeerListListener.onPeersAvailable()
            mPeers = new ArrayList<>();
            mConfigs = new ArrayList<>();

            if (mManager != null) {

                mManager.requestPeers(mChannel, new WifiP2pManager.PeerListListener() {
                            @Override
                            public void onPeersAvailable(WifiP2pDeviceList peerList) {
                                mPeers.clear();
                                mPeers.addAll(peerList.getDeviceList());
                                mActivity.displayPeers(peerList);

                                for (int i = 0; i < peerList.getDeviceList().size(); i++) {
                                    WifiP2pConfig config = new WifiP2pConfig();
                                    config.deviceAddress = mPeers.get(i).deviceAddress;
                                    mConfigs.add(config);
                                }
                            }

                        });

            }

            if (mPeers.size() == 0) {
                Log.d("::::::::::::::::::::::", "No devices found");
                return;
            }

        }
        else if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) {
            Log.d(TAG, "wifi p2p connection changed action");
            NetworkInfo networkInfo = intent.getParcelableExtra(WifiP2pManager.EXTRA_NETWORK_INFO);
            Log.d(TAG,"network info available");
            // Respond to new connection or disconnections
        } else if (WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION.equals(action)) {
            // Respond to this device's wifi state
            Log.d(TAG, "wifi p2p this device changed action");
//            notifyDeviceUpdate();
            WifiP2pDevice thisDevice = intent.getParcelableExtra(WifiP2pManager.EXTRA_WIFI_P2P_DEVICE);
            Log.d(TAG,"this device acquired");
        }
    }
}
package com.neeraj8le.majorproject;
导入android.content.BroadcastReceiver;
导入android.content.Context;
导入android.content.Intent;
导入android.net.NetworkInfo;
导入android.net.wifi.p2p.WifiP2pConfig;
导入android.net.wifi.p2p.wifip2p设备;
导入android.net.wifi.p2p.WifiP2pDeviceList;
导入android.net.wifi.p2p.WifiP2pManager;
导入android.util.Log;
导入android.widget.Toast;
导入com.neeraj8le.majorproject.activity.selectpepractivity;
导入java.util.ArrayList;
导入java.util.List;
公共类WiFiDirectBroadcastReceiver扩展了BroadcastReceiver{
私有静态最终字符串标记=“:::::::::::::::::”;
私有WifiP2pManager-mManager;
私有WifiP2pManager.Channel mcchannel;
私人选择的实用性;
列出MPER;
列出mConfigs;
公共WiFiDirectBroadcastReceiver(WifiP2pManager、WifiP2pManager.Channel频道、SelectpeActivity活动){
超级();
this.mManager=manager;
this.mcchannel=通道;
这个。活动=活动;
}
@凌驾
公共void onReceive(上下文、意图){
String action=intent.getAction();
如果(WifiP2pManager.WIFI\u P2P\u STATE\u CHANGED\u ACTION.equals(ACTION)){//检查Wi-Fi是否已启用并通知相应的活动
int state=intent.getIntExtra(WifiP2pManager.EXTRA\u WIFI\u state,-1);
if(state==WifiP2pManager.WIFI\u P2P\u state\u ENABLED){
Toast.makeText(mActivity,“Wifi直接启用”,Toast.LENGTH_SHORT.show();
//已启用Wifi P2P
}否则{
Toast.makeText(mActivity,“Wifi直接禁用”,Toast.LENGTH_SHORT.show();
//未启用Wi-Fi P2P
}
}
else if(WifiP2pManager.WIFI\u P2P\u PEERS\u CHANGED\u ACTION.equals(ACTION))
{
//调用WifiP2pManager.requestPeers()以获取当前对等点的列表
//从wifi p2p管理器请求可用的对等点。这是一个
//异步调用,并使用
//对PeerListener.onPeersAvailable()的回调
mPeers=newarraylist();
mConfigs=newarraylist();
if(mManager!=null){
requestPeers(mcchannel,新的WifiP2pManager.peerListener(){
@凌驾
PeersAvailable上的公共无效(WifiP2pDeviceList peerList){
mPeers.clear();
addAll(peerList.getDeviceList());
mActivity.displayPeers(peerList);
对于(int i=0;i