How to transfer “data” between two device (android,iphone)?

后端 未结 5 2031
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-02-02 01:54

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

5条回答
  •  北海茫月
    2021-02-02 02:14

    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

    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 en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
                    NetworkInterface intf = en.nextElement();
                    for (Enumeration 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();
             }
        }
    
    }
    

提交回复
热议问题