¿Cómo transferir "datos" entre dos dispositivos (android, iphone)?
¿Cómo puedo transferir datos entre dos dispositivos? Me gustaría transferir datos (principalmente archivo de imagen) entre diferentes plataformas (android, iphone). ¿Es posible usar p2p o debo usar cliente-servidor?
Cualquier ayuda será apreciada.
- Android Wifi Direct detecta a sus compañeros pero Peer List es emty
- ¿Es posible la comunicación peer-to-peer sobre 3G / 4G para teléfonos inteligentes?
- ¿Empujar datos de un dispositivo a otro?
- Comunicación de clientes / pares con wifi-direct en la plataforma Android
- Controlar el teléfono desde la computadora portátil
- IO sin bloqueo para Android
- ¿Es posible conectar dos o más grupos WiFi Direct?
- P2P pagos dentro de la aplicación de Android con Paypal
- Peer-to-Peer de vídeo de iOS a Android?
- Creación de una aplicación mediante la demostración WebRTC AppRtc
- Arquitectura de Peer-to-Peer de Android / iOS
- Android - crear grupo por wifi p2p directo para varios dispositivos
- WebRTC servidor de señalización local
Si bien p2p es posible en algunos casos, obtendrá la compatibilidad más extendida con una arquitectura cliente-servidor, a costa de tener que desplegar, conectar, y mantener servidores.
- Podrá utilizar tanto los puntos de acceso wifi como las redes móviles (3g, etc.)
- Tiene un lugar listo en el sistema para medir (o restringir) el uso y / o insertar anuncios
- Usted no tiene que preocuparse por los cortafuegos que bloquean las conexiones entrantes a los dispositivos (común en wifi, casi siempre el caso en móvil)
- Las localizaciones relativas de los dispositivos son irrelevantes
- Puede interactuar no sólo con los teléfonos inteligentes y las tabletas, sino también con las PC y los ordenadores portátiles tradicionales
¿Has mirado a la biblioteca AllJoyn de Qualcomm ? Funciona a través de Bluetooth o wifi solamente.
El código a continuación se copia de esta programación de socket incorporado en sus aplicaciones
public class ServerActivity extends Activity { private TextView serverStatus; // default ip public static String SERVERIP = "10.0.2.15"; // designate a port public static final int SERVERPORT = 8080; private Handler handler = new Handler(); private ServerSocket serverSocket; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.server); serverStatus = (TextView) findViewById(R.id.server_status); SERVERIP = getLocalIpAddress(); Thread fst = new Thread(new ServerThread()); fst.start(); } public class ServerThread implements Runnable { public void run() { try { if (SERVERIP != null) { handler.post(new Runnable() { @Override public void run() { serverStatus.setText("Listening on IP: " + SERVERIP); } }); serverSocket = new ServerSocket(SERVERPORT); while (true) { // listen for incoming clients Socket client = serverSocket.accept(); handler.post(new Runnable() { @Override public void run() { serverStatus.setText("Connected."); } }); try { BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream())); String line = null; while ((line = in.readLine()) != null) { Log.d("ServerActivity", line); handler.post(new Runnable() { @Override public void run() { // do whatever you want to the front end // this is where you can be creative } }); } break; } catch (Exception e) { handler.post(new Runnable() { @Override public void run() { serverStatus.setText("Oops. Connection interrupted. Please reconnect your phones."); } }); e.printStackTrace(); } } } else { handler.post(new Runnable() { @Override public void run() { serverStatus.setText("Couldn't detect internet connection."); } }); } } catch (Exception e) { handler.post(new Runnable() { @Override public void run() { serverStatus.setText("Error"); } }); e.printStackTrace(); } } } // gets the ip address of your phone's network private String getLocalIpAddress() { try { for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { NetworkInterface intf = en.nextElement(); for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) { InetAddress inetAddress = enumIpAddr.nextElement(); if (!inetAddress.isLoopbackAddress()) { return inetAddress.getHostAddress().toString(); } } } } catch (SocketException ex) { Log.e("ServerActivity", ex.toString()); } return null; } @Override protected void onStop() { super.onStop(); try { // make sure you close the socket upon exiting serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } } }
Si estás bien con Bump , entonces proporcionan una API para los desarrolladores de usar y su bastante simple de usar. Mira esto.
Para ver una demostración en vivo de la transferencia entre iOS y Android @ youtube .
Snippet de código detallado y ejemplo en Github .
PD: no pertenezco a bu.mp :).
Yo usaría un WebService. Esto facilita el mantenimiento de su servicio, ya que la implementación del servicio es independiente de su aplicación.
Pro Webservice:
- Alcanzable bajo un DNS pre configurado
- Las modificaciones en el servicio no afectan a la aplicación (no hay actualizaciones necesarias sobre posibles correcciones de errores)
Contra Webservice:
- Todo el tráfico pasa por su servidor
- La aplicación depende de su servidor
El usted debe preguntarse la pregunta, ¿cuánto datos se transfieren en su comunicación? ¿Existe un beneficio real de usar conexiones directas?
Puede utilizar filehub para transferir archivos entre IOS y Android.
Hay un nuevo dispositivo llamado fielhub en el mercado puede transferir fotos / películas / música entre iOS y dispositivos Android, o entre dispositivos móviles y SD Card / USB HDD .. Creo que se llama ravpower filehub.
- OnMenuItemSelected no se llama cuando la disposición se establece para el elemento de menú
- Android Gradle Plugin 1.1.0 – getNdkFolder () no se encuentra más, cualquier sustituto?