Alc*_*ive 15 iphone networking android wifi wifi-direct
我知道Wifi Direct可以通过在其中一个设备中创建一个Soft AP(软件访问点)来工作.我也知道很多Androids都支持Wifi Direct,但iPhone却没有.
我的问题是:是否有可能创建一个设备到设备的WiFi链接,在Android端是Wifi Direct,但在iPhone端有常规的wifi?Android的Wifi Direct将呈现一个软AP,iPhone看起来与常规AP无法区分,并能够与之关联.
想象一下,这是在没有路由器AP可用的荒野中.此外,两个用户都没有绑定计划.
此类链接将由类似Bump的应用程序用于传输文件.
Nil*_*rik 10
根据您的手机,您只需将Android手机设置为便携式热点,然后通过iPhone连接即可.从那里,它将是特定于应用程序以获取数据传输.
但是,您也可以使用Androids WiFi-Direct库.在这种情况下,您可以使用它们来设置Android手机以创建"群组所有者",这基本上与它是便携式热点相同.查看:
http://developer.android.com/guide/topics/connectivity/wifip2p.html
我会给你一个代码示例来帮助你入门.
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();
}
});
}
Run Code Online (Sandbox Code Playgroud)
此外,你需要广播接收器,看看WiFi-Direct演示,你应该清楚.
请注意,line manager.createGroup(channel,new ActionListener()是感兴趣的代码行,实际上将该设备设置为便携式热点.
希望这能澄清事情,我真的不知道你需要多详细的解释.评论是否有些事情不清楚.
归档时间: |
|
查看次数: |
38680 次 |
最近记录: |