How To Transfer "data" Between Two Device (android,iphone)?
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)?"