Connect two android phones with wi-fi (without laptop or access point) and send file

后端 未结 4 681
一生所求
一生所求 2020-12-24 03:47

Is it possible to connect two android phones by wi-fi, without using a bluetooth/GSM/CDMA/IR? Also, there is no any laptop or wi-fi access points or wi-fi routers.

相关标签:
4条回答
  • 2020-12-24 04:09

    This is actually possible with SDK V 14. As the documents state:

    1. Create a broadcast receiver for Wi-Fi Direct Intents
    2. Set up permissions
    3. Set up the receiver in onCreate()
    4. Set up an intent filter
    5. Register the receiver in onResume()

    I've included some of the key code constructs below to make this happen. But read the documentation for more information.

    Here's a sample Broadcast Receiver

    public class WiFiDirectBroadcastReceiver extends BroadcastReceiver {
    
        private WifiP2pManager manager;
        private Channel channel;
        private MyWiFiActivity activity;
    
        public WiFiDirectBroadcastReceiver(WifiP2pManager manager, Channel channel,
                MyWifiActivity activity) {
            super();
            this.manager = manager;
            this.channel = channel;
            this.activity = activity;
        }
    
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION.equals(action)) {
                int state = intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE, -1);
                if (state == WifiP2pManager.WIFI_P2P_STATE_ENABLED) {
                    // Wifi Direct is enabled
                } else {
                    // Wi-Fi Direct is not enabled
                }
            } else if (WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action)) {
                // Call WifiP2pManager.requestPeers() to get a list of current peers
            } else if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) {
                // Respond to new connection or disconnections
            } else if (WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION.equals(action)) {
                // Respond to this device's wifi state changing
            }
        }
    }
    

    Permissions:

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
    0 讨论(0)
  • 2020-12-24 04:17

    Try connecting with FTPDroid and Turbo Client over wifi. Either that, or set up a VPN and connect all of your devices remotely via SSH, FTP and/or SFTP.

    0 讨论(0)
  • If you just wanna use that feature and not implement it in an own app, have a look at Apps like Superbeam, Send! or Fast File Transfer, which mainly use WiFi direct.

    Here are some links.

    • https://play.google.com/store/apps/details?id=com.majedev.superbeam
    • https://play.google.com/store/apps/details?id=nz.intelx.send.lite
    • https://play.google.com/store/apps/details?id=com.floriandraschbacher.fastfiletransfer
    0 讨论(0)
  • 2020-12-24 04:23

    This is called ad hoc network and has been asked before:

    Can Android do peer-to-peer ad-hoc networking?

    Android Wifi direct multiple connection ad-hoc

    Android ad-hoc / access point connection capabilities

    Update:

    Short answer: ad hoc is not yet supported on Android so this would not work.

    You can use Bluetooth to connect two Android phones in a p2p fashion.

    Update 2:

    Direct device-to-device connection over Wifi is supported under API 14 in Android 4.0 ICS in package android.net.wifi.p2p. You can test devices capability via FEATURE_WIFI_DIRECT.

    0 讨论(0)
提交回复
热议问题