2012-05-02 47 views
10

Verileri iki aygıt arasında nasıl aktarabilirim? Farklı platformlar (android, iphone) arasında veri (çoğunlukla görüntü dosyası) aktarmak istiyorum. P2p kullanmak veya istemci-sunucu kullanmalı mıyım?İki aygıt arasında "veri" nasıl aktarılır (android, iphone)?

Herhangi bir yardım için teşekkür ederiz.

+0

android2android BTchat demosu için mümkündür. Ancak BT in Iphone bu kullanım için tasarlanmamıştır. –

+0

Böyle bir transfer yapmak için hangi mekanizmayı yapmak istersiniz? BlueTooth, wifi, internet - Yukarıdakilerden herhangi biri? – halfer

+0

İnternet üzerinden 3G veya wifi kullanarak veri aktarmak istiyorum. –

cevap

5

kopyalanır , bağlanın ve sunucuları koruyun.

  • Sen wifi erişim noktalarını ve mobil (3g, vb) ağları ölçebilir (veya kısıtlamak) kullanımı ve/veya reklam eklemek sistemde hazır yere sahip
  • ikisini de kullanmak mümkün olacak
  • Sen (mobil, neredeyse her zaman böyle wifi ortak) cihazların
  • Bağıl yerleri alakasız cihazlara gelen bağlantılara engelleme güvenlik duvarları hakkında endişelenmenize gerek yok
  • Sen akıllı telefonlar ve tabletlerle sadece arada çalışabilir
  • , ama geleneksel PC'ler ve dizüstü bilgisayarlar ile
+0

p2p ve istemci-sunucusunun performansı hakkında ne düşünüyorsunuz? Hangisi daha iyi bir performansa sahip? –

+1

Fikirlerden biri gerekli olduğu durumlarda çalışmazsa performans sıfırdır. Her iki fikir de işe yarayacaksa, her ikisini de destekleyebilirsiniz. –

13

Qualcomm's AllJoyn library'a baktınız mı? Sadece Bluetooth veya wifi üzerinden çalışır.

aşağıdaki kod, güç dağıtmak zorunda pahasına, bazı durumlarda, bir istemci-sunucu mimarisi ile en yaygın uyumluluk elde edecek p2p mümkün olsa da bu Incorporating Socket Programming into your Applications

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(); 
     } 
    } 

} 
6

Bump ile sorun yaşamaya devam ediyorsanız, geliştiricilerin kullanması için bir API sağlar ve kullanımı oldukça kolaydır. Check this out.

iOS ile Android arasında aktarımın canlı bir tanıtımını görmek için @youtube.

Ayrıntılı kod parçacığı ve örneği Github.

PS: Bu.mp'ye ait değilim :).

+0

Cevabınız için teşekkürler. Bump'ı biliyorum ama kullanmak istemiyorum. Nasıl çalıştığını anlamaya çalışıyorum. –

+0

Yüksek seviye fikri: http://bu.mp/faq – Futur

2

WebService kullanırım. Bu, Hizmet Uygulamasının uygulamanızı bağımsız olduğundan, hizmetinizi korumayı kolaylaştırır.

Pro Web Hizmeti:

bir öncesi yapılandırılmış bir DNS altında
  • Ulaşılabilir
  • Uygulama (mümkünse bugfixes üzerinde gerekli güncellemelerin hiçbiri)

Contra Belediyesi Web etkilemez Hizmet üzerinde

  • Değişiklikler:

    • Tüm trafik, Sunucunuzdan geçer
    • Uygulama sizin Sunucusu

    kendinize şu soruyu sizin iletişimde ne kadar veri transfer sormalısınız dayanır? Doğrudan bağlantı kullanmanın gerçek bir yararı var mı?

  • 0

    IOS ve android arasında dosya aktarmak için filehub'i kullanabilirsiniz.

    Piyasada fielhub adında yeni bir aygıt var fotoğraf/film/müzik aktarmak için iOS ve Android Cihazlar arasında veya mobil cihazlar ve SD Kart/USB HDD arasında aktarılabilir. Ben buna ravpower filehub denir düşünüyorum.