Skip to content Skip to sidebar Skip to footer

How To Transfer "data" Between Two Device (android,iphone)?

How can i transfer data between two device? I would like to transfer data (mostly image file) between different platforms (android,iphone). Is it possible to use p2p or should i us

Solution 1:

Have you looked at Qualcomm's AllJoyn library? It works over Bluetooth or wifi only.

The below code is copied from this Incorporating Socket Programming into your Applications

publicclassServerActivityextendsActivity {

    private TextView serverStatus;

    // default ippublicstaticStringSERVERIP="10.0.2.15";

    // designate a portpublicstaticfinalintSERVERPORT=8080;

    privateHandlerhandler=newHandler();

    private ServerSocket serverSocket;

    @OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.server);
        serverStatus = (TextView) findViewById(R.id.server_status);

        SERVERIP = getLocalIpAddress();

        Threadfst=newThread(newServerThread());
        fst.start();
    }

    publicclassServerThreadimplementsRunnable {

        publicvoidrun() {
            try {
                if (SERVERIP != null) {
                    handler.post(newRunnable() {
                        @Overridepublicvoidrun() {
                            serverStatus.setText("Listening on IP: " + SERVERIP);
                        }
                    });
                    serverSocket = newServerSocket(SERVERPORT);
                    while (true) {
                        // listen for incoming clientsSocketclient= serverSocket.accept();
                        handler.post(newRunnable() {
                            @Overridepublicvoidrun() {
                                serverStatus.setText("Connected.");
                            }
                        });

                        try {
                            BufferedReaderin=newBufferedReader(newInputStreamReader(client.getInputStream()));
                            Stringline=null;
                            while ((line = in.readLine()) != null) {
                                Log.d("ServerActivity", line);
                                handler.post(newRunnable() {
                                    @Overridepublicvoidrun() {
                                        // do whatever you want to the front end// this is where you can be creative
                                    }
                                });
                            }
                            break;
                        } catch (Exception e) {
                            handler.post(newRunnable() {
                                @Overridepublicvoidrun() {
                                    serverStatus.setText("Oops. Connection interrupted. Please reconnect your phones.");
                                }
                            });
                            e.printStackTrace();
                        }
                    }
                } else {
                    handler.post(newRunnable() {
                        @Overridepublicvoidrun() {
                            serverStatus.setText("Couldn't detect internet connection.");
                        }
                    });
                }
            } catch (Exception e) {
                handler.post(newRunnable() {
                    @Overridepublicvoidrun() {
                        serverStatus.setText("Error");
                    }
                });
                e.printStackTrace();
            }
        }
    }

    // gets the ip address of your phone's networkprivate String getLocalIpAddress() {
        try {
            for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
                NetworkInterfaceintf= en.nextElement();
                for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
                    InetAddressinetAddress= enumIpAddr.nextElement();
                    if (!inetAddress.isLoopbackAddress()) { return inetAddress.getHostAddress().toString(); }
                }
            }
        } catch (SocketException ex) {
            Log.e("ServerActivity", ex.toString());
        }
        returnnull;
    }

    @OverrideprotectedvoidonStop() {
        super.onStop();
        try {
             // make sure you close the socket upon exiting
             serverSocket.close();
         } catch (IOException e) {
             e.printStackTrace();
         }
    }

}

Solution 2:

If you are OK with Bump, Then they provide an API for the developers to use and its pretty simple to use. Check this out.

To see a live demo of transferring between iOS and Android @ youtube.

Detailed code snippet and example in Github.

PS: i don't belong to bu.mp :).

Solution 3:

While p2p is possible in some cases, you will achieve the most widespread compatibility with a client-server architecture, at the cost of having to deploy, power, connect, and maintain servers.

  • You will be able to use both wifi access points and mobile (3g, etc) networks
  • You have a ready place in the system to measure (or restrict) usage and/or insert ads
  • You don't have to worry about firewalls blocking inbound connections to the devices (common on wifi, almost always the case on mobile)
  • Relative locations of the devices are irrelevant
  • You can interoperate not only with smartphones and tablets, but with traditional PCs and laptops

Solution 4:

I would use a WebService. That makes it easier to maintain your service, becuase the Service Implementation is independent of your app.

Pro Webservice:

  • Reachable under a pre configured DNS
  • Modifications on the Service do not affect the Application (No updates needed on possible bugfixes)

Contra Webservice:

  • All the traffic goes through your Server
  • Application relies on your Server

The you should ask yourself the question, how much data is transferred in your communication? Is there a real benefit of using direct connections?

Solution 5:

You can use filehub to transfer files between IOS and android.

there is a new device called fielhub on the market can transfer photos/movies/music between iOS and Android Devices, or between mobile devices and SD Card/USB HDD.. I think it is called ravpower filehub.

Post a Comment for "How To Transfer "data" Between Two Device (android,iphone)?"