首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将iPhone连接到安卓的Wifi Direct软件AP

将iPhone连接到安卓的Wifi Direct软件AP
EN

Stack Overflow用户
提问于 2012-10-02 12:50:16
回答 1查看 46.9K关注 0票数 16

我知道Wifi Direct的工作原理是在其中一个设备上创建一个软AP (软件接入点)。我也知道很多安卓设备都支持Wifi Direct,但iPhones不支持。

我的问题是:有没有可能创建一个设备到设备的wifi连接,在安卓一端是Wifi Direct,而在iPhone一端是普通的wifi?安卓的Wifi Direct将呈现一个软AP,iPhone将认为它与常规AP没有区别,并能够与之关联。

想象一下,这是在没有可用的路由器AP的荒野中。此外,两个用户都没有系留计划。

这个链接将被一个类似Bump的应用程序用来传输文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-15 21:23:17

根据你的手机,你可以将你的安卓手机设置为便携热点,然后通过iPhone连接到它。从那里,它将是特定于应用程序的,以传输数据。

不过,您也可以使用Androids WiFi-Direct库。在这种情况下,您可以使用它们来设置Android手机来创建一个"Group owner",这基本上与它是一个便携热点相同。查看:

http://developer.android.com/guide/topics/connectivity/wifip2p.html

我将提供一个代码示例来帮助您入门。

代码语言:javascript
运行
复制
public class WifiDirectAPtestActivity extends Activity 
{
private WifiP2pManager manager;
private boolean isWifiP2pEnabled = false;
private boolean retryChannel = false;

private final IntentFilter intentFilter = new IntentFilter();
private Channel channel;
private BroadcastReceiver receiver = null;

public void setIsWifiP2pEnabled(boolean isWifiP2pEnabled) {
    this.isWifiP2pEnabled = isWifiP2pEnabled;
}
@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
 // add necessary intent values to be matched.

    intentFilter.addAction(WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION);
    intentFilter.addAction(WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION);
    intentFilter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION);
    intentFilter.addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION);

    manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
    channel = manager.initialize(this, getMainLooper(), null);
}
/** register the BroadcastReceiver with the intent values to be matched */
@Override
public void onResume() {
    super.onResume();
    receiver = new WiFiDirectBroadcastReceiver(manager, channel, this);
    registerReceiver(receiver, intentFilter);
    createGroup();
}

@Override
public void onPause() {
    super.onPause();
    unregisterReceiver(receiver);
    manager.removeGroup(channel, new ActionListener() {

        @Override
        public void onFailure(int reasonCode) {
            Log.d("WifiDirectAptestActivity", "Disconnect failed. Reason :" + reasonCode);

        }

        @Override
        public void onSuccess() {
            Log.d("WifiDirectAptestActivity", "Should have been sucessfully removed");
        }

    });
}
public void createGroup()
{
    manager.createGroup(channel, new ActionListener() {

        @Override
        public void onSuccess() {
            // WiFiDirectBroadcastReceiver will notify us. Ignore for now.
            Log.d("WifiDirectAPtestActivity", "Group creating request successfully send");
        }

        @Override
        public void onFailure(int reason) {
            Toast.makeText(WifiDirectAPtestActivity.this, "Connect failed. Retry.",
                    Toast.LENGTH_SHORT).show();
        }
    });
}

此外,您还需要广播接收器,请查看WiFi-Direct演示,这对您来说应该很清楚。

请注意,manager.createGroup(通道,新的ActionListener() )行是您感兴趣的代码行,正是此行将设备实际设置为可移植的热点。

希望这能澄清一些事情,我真的不知道你需要多详细的解释。如果有些事情不清楚,请发表意见。

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

https://stackoverflow.com/questions/12684709

复制
相关文章

相似问题

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