首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在多个活动中使用Android WifiP2P

在多个活动中使用Android WifiP2P
EN

Stack Overflow用户
提问于 2014-09-16 03:35:37
回答 1查看 1.5K关注 0票数 3

我在我的Android应用程序中使用android Wifi P2P技术在多个设备之间发送简单的数据传输。我正在读Wifi p2p的开发人员指南,但它的实现似乎只针对一个使用Wifi直接服务的活动。

按照指南,我创建了这个BroadcastReceiver类来侦听Wifi Direct事件:

代码语言:javascript
运行
复制
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.wifi.p2p.WifiP2pManager;
import android.net.wifi.p2p.WifiP2pManager.Channel;

public class WifiDirectBroadcastReceiver extends BroadcastReceiver {
    private WifiP2pManager manager;
    private Channel channel;
    private WifiActivity activity;

    public WifiDirectBroadcastReceiver(WifiP2pManager manager, Channel channel, WifiActivity activity){
        this.manager = manager;
        this.channel = channel;
        this.activity = 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
        }else if (WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action)){
            // Call WifiP2pManager.requestPeers() to get a list of current peers
        }else if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)){
            // Respond to new connection or disconnections
        }else if (WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION.equals(action)){
            // Respond to this device's wifi state changing
        }
    }
}

然而,构造函数似乎只适用于一个活动。我必须为每个使用Wifi Direct的活动创建一个接收器吗?如何将连接传递到不同的活动,而不必每次都建立连接(例如,查找同级、连接到同级等)?

EN

回答 1

Stack Overflow用户

发布于 2018-02-11 01:34:57

虽然答案来得太晚了,但由于没有人回答,我想提供解决方案。

您需要使用多个活动注册广播接收器,并使用以下代码更改构造函数

代码语言:javascript
运行
复制
public WiFiDirectBroadcastReceiver(WifiP2pManager manager, Channel channel,Context activity) {
        super();
        this.manager = manager;
        this.channel = channel;
        this.activity = activity;
    }

如果您需要根据活动更改代码,只需检查以下内容

代码语言:javascript
运行
复制
if(activity instanceof yourActivityName){
// your code based on the current activity
}

在你的活动中注册你的广播接收器

代码语言:javascript
运行
复制
receiver = new WiFiDirectBroadcastReceiver(manager, channel, this);
        registerReceiver(receiver, intentFilter);

希望这能有所帮助

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25855627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档