Cómo compartir su red Wifi con dispositivos cercanos, usando el servicio cercano de HMS
Published: 2021-04-07 22:22:15

La comunicación de datos permite que las aplicaciones descubran fácilmente los dispositivos cercanos y establezcan la comunicación con ellos mediante tecnologías como Bluetooth y Wi-Fi.
Descubre dispositivos y establece canales de comunicación seguros con ellos sin conectarse a Internet y les transfiere matrices de bytes, archivos y transmisiones; admite interacciones cercanas fluidas, como juegos para varios jugadores, colaboración en tiempo real, transmisión de recursos e intercambio de contenido.
Near Connection permite que las aplicaciones descubran y se conecten fácilmente a dispositivos cercanos e intercambien datos con dispositivos cercanos
Uso compartido de Wi-Fi entre terminales
![Alt text of image](https://cdn-images-1.medium.com/max/900/0*rybNUfV0lhNWSq7P.png)

El proceso se puede dividir en tres fases.
Habilite el uso compartido de Wi-Fi.una. 

Llame a WifiSharePolicy para configurar o compartir la red según sea necesario.
B. Registre WifiShareCallback para procesar eventos de devolución de llamada.
C. Llame a startWifiShare () para habilitar la función de compartir Wi-Fi.
2. Comparte Wi-Fi.
Llame a la API shareWifiConfig () para compartir Wi-Fi con el punto final remoto.
3. Desactive el uso compartido de Wi-Fi.
Llame a la API stopWifiShare () para deshabilitar la función de compartir Wi-Fi.

Agregar permisos
Para desarrollar la función Conexión cercana, debe agregar permisos específicos al archivo AndroidManifest.xml.

```
<!-- Required for Nearby Connection --> 
<uses-permission android:name="android.permission.BLUETOOTH" /> 
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<!-- Required for FILE payloads --> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
```
Los permisos ACCESS_FINE_LOCATION, WRITE_EXTERNAL_STORAGE y READ_EXTERNAL_STORAGE son permisos del sistema peligrosos, por lo que debe solicitar estos permisos de forma dinámica. Si su aplicación no tiene los permisos, el Servicio Cercano rechazará su aplicación para habilitar la transmisión o el escaneo.

# Compartir Wi-Fi
Llame a la API startWifiShare () para habilitar la función para compartir Wi-Fi. Después de descubrir un dispositivo, el final de uso compartido llama a shareWifiConfig () para compartir Wi-Fi

# Habilitando el uso compartido de Wi-Fi.
Llame a startWifiShare () para habilitar la función de compartir Wi-Fi. El código de muestra es el siguiente:

```
private WifiShareCallback mWifiShareCallback = new WifiShareCallback() {
        @Override
        public void onFound(String endpointId, ScanEndpointInfo scanEndpointInfo) {
            Log.d(TAG, "onFound");
            /*Update and Show device list to select*/
        }
 
        @Override
        public void onLost(String endpointId) {
            Log.d(TAG, "onLost");
            /*Update device list*/
        }
 
        @Override
        public void onFetchAuthCode(String endpointId, String authCode) {
            Log.d(TAG, "onFetchAuthCode");
            /*To display AuthCode*/
        }
 
        @Override
        public void onWifiShareResult(String endpointId, int statusCode) {
            Log.d(TAG, "WifiShare result: " + endpointId + ", statusCode: " + statusCode);
            /*Handle result*/
        }
    };
 
// The device to set wifi 
Nearby.getWifiShareEngine(getApplicationContext()).startWifiShare(mWifiShareCallback, WifiSharePolicy.POLICY_SET);
 
// The device to share wifi 
Nearby.getWifiShareEngine(getApplicationContext()).startWifiShare(mWifiShareCallback, WifiSharePolicy.POLICY_SHARE);
```

# Compartir Wi-Fi
Llame a shareWifiConfig () para compartir la red Wi-Fi con el punto final remoto. El código de muestra es el siguiente:
```
Nearby.getWifiShareEngine(getApplicationContext()).shareWifiConfig(endpointId);
```
Deshabilitar el uso compartido de Wi-Fi
Llame a stopWifiShare () para deshabilitar la función de compartir Wi-Fi. El código de muestra es el siguiente:
```
Nearby.getWifiShareEngine(getApplicationContext()).stopWifiShare();
```
# ¿Qué datos recopila el SDK?

El SDK común procesa solo los datos que se van a transmitir y no recopila otros datos.
Cuando utiliza el SDK independiente, el servicio cercano de HUAWEI recopila los datos necesarios sobre las llamadas a la API para el análisis de estadísticas y la mejora del servicio.
Los datos que se recopilarán no contienen ningún dato personal e incluyen lo siguiente: nombre del paquete de la aplicación, ID de la aplicación, versión de la aplicación, versión de HMS Core (APK), versión del SDK de HMS Core Near, nombre del servicio del servicio cercano de HUAWEI, nombre de API, API resultado de llamada, latencia de respuesta de API, tiempo de llamada de API, ID de transacción, modelo de dispositivo, código de país / región, versión de EMUI del cliente, resultado de publicación de mensaje, latencia de publicación de mensaje, resultado de suscripción de mensaje, latencia de suscripción de mensaje, ID de mensaje máximo, TTL de mensaje, baliza tipo, latencia de descubrimiento de dispositivo, resultado de conexión, latencia de conexión, resultado de transmisión de datos, tamaño de datos transmitidos, latencia de transmisión de datos, tipo de canal, política de conexión y política de transmisión.
Puede informar a los usuarios de la política de privacidad en su aplicación. El SDK recopila las direcciones IP de los usuarios al conectar los dispositivos de los usuarios al servidor para la generación de informes de datos. Las direcciones IP recopiladas se eliminarán inmediatamente después de que se establezca la conexión.

# Cómo el SDK protege sus datos
El SDK de servicio cercano principal de HMS se comunica con el servidor mediante HTTPS, verifica la validez del certificado del servidor y cifra la información del mensaje en la nube.

https://forums.developer.huawei.com/forumPortal/en/topic/0203418329421140027