Подключите iPhone к Android Wifi Direct Soft AP

Я знаю, что Wifi Direct работает, создавая Soft AP (точка доступа к программному обеспечению) на одном из устройств. Я также знаю, что многие андроиды поддерживают Wifi Direct, но iPhone нет.

Мой вопрос: возможно ли создать соединение Wi-Fi устройства с устройством, которое является Wifi Direct на стороне Android, но обычный Wi-Fi на стороне iPhone? Где Android Wifi Direct будет представлять собой мягкую точку доступа, которую iPhone увидит как неотличимую от обычной точки доступа и сможет связываться с ней.

Представьте, что это находится в пустыне, где нет доступа к маршрутизатору AP. Кроме того, у пользователя нет плана привязки.

Эта ссылка будет использоваться приложением Bump-like для передачи файлов.

В зависимости от вашего телефона вы можете просто настроить свой 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(); } }); } 

Кроме того, вам понадобится широковещательный приемник, посмотрите демо-версию WiFi-Direct, и вам должно быть ясно.

Обратите внимание, что строка manager.createGroup (канал, новый ActionListener () является интересной кодировкой, именно эта строка фактически устанавливает устройство в качестве переносной точки доступа.

Надеюсь, что это прояснит ситуацию, я действительно не знаю, как подробное объяснение вам нужно. Прокомментируйте, если некоторые вещи не ясны.

Intereting Posts