Jak przesyłać "dane" między dwoma urządzeniami (android,iphone)?
Jak mogę przesyłać dane między dwoma urządzeniami? Chciałbym przesyłać dane (głównie plik obrazu) pomiędzy różnymi platformami (android,iphone). Czy jest możliwość korzystania z p2p czy powinienem używać klient-serwer?
Każda pomoc będzie mile widziana.
5 answers
Chociaż p2p jest możliwe w niektórych przypadkach, można osiągnąć najbardziej rozpowszechnioną kompatybilność z architekturą klient-serwer, kosztem konieczności wdrożenia, zasilania, podłączenia i utrzymania serwerów.
- Będziesz mógł korzystać zarówno z punktów dostępowych wifi, jak i sieci mobilnych (3g itp.)]}
- masz gotowe miejsce w systemie do pomiaru (lub ograniczenia) użytkowania i / lub wstawiania reklam
- nie musisz się martwić o zapory blokujące połączenia przychodzące do urządzeń (wspólne na wifi, prawie zawsze w przypadku telefonu komórkowego)
- względne lokalizacje urządzeń są nieistotne Możesz współpracować nie tylko ze smartfonami i tabletami, ale także z tradycyjnymi komputerami i laptopami]}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-07 06:35:13
Przejrzałeśbibliotekę Qualcomma AllJoyn ? Działa tylko przez Bluetooth lub wifi.
Poniższy kod jest skopiowany z tego włączając Programowanie gniazd do Twoich aplikacji
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();
}
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-05 04:18:57
Jeśli nie masz nic przeciwko Bump, to zapewniają one API dla programistów i są dość proste w użyciu. Zobacz też
Aby zobaczyć na żywo demo transferu między iOS i Android @ youtube.
Szczegółowy fragment kodu i przykład w Github .
PS: nie należę do bu.mp :).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-07 06:58:44
Użyłbym WebService. Ułatwia to utrzymanie usługi, ponieważ wdrożenie usługi jest niezależne od aplikacji.
Pro Webservice:
- W tym celu należy skontaktować się z Działem obsługi klienta.]}
- modyfikacje w usłudze nie wpływają na APLIKACJĘ (nie są potrzebne aktualizacje na możliwe poprawki błędów)
Contra Webservice:
- cały ruch przechodzi przez Twój Serwer
- Aplikacja opiera się na Twoim serwerze
The you należy zadać sobie pytanie, ile danych jest przesyłane w komunikacji? Czy korzystanie z połączeń bezpośrednich przynosi realne korzyści?
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-10 10:34:42
Możesz użyć filehub do przesyłania plików między IOS i Androidem.
Istnieje nowe urządzenie o nazwie fielhub na rynku może przesyłać zdjęcia / filmy/muzykę między urządzeniami z systemem iOS i Android lub między urządzeniami mobilnymi a kartą SD / USB HDD.. Myślę, że nazywa się RAVPower filehub.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-12 08:23:22