Tipo de conexión a Internet actual en tiempo real mediante programación en Android

En la liga actual de redes centradas en la información, los desarrolladores necesitan conocer el tipo de búsquedas web realizadas por los usuarios en Internet. Para dirigirse a la audiencia con datos específicos, los desarrolladores deben tener y trabajar en una gran cantidad de entidades. Una de esas entidades es la información de conexión. ¿Alguna vez ha notado que Google Play le pide que cambie a Wi-Fi mientras estaba en los datos móviles tratando de descargar una aplicación? ¿Alguna vez vio una caída en la calidad del video en línea cuando cambia de Wi-Fi a datos móviles? La ética dice que es esencial monitorear cada entidad que se usa en todas las aplicaciones, y Android es capaz de hacerlo. El papel que juega la arquitectura de Android aquí es cambiarlo de un tipo de conexión a otro posible en caso de una falla en la red, pero no cambia las especificaciones de los datos que se muestran. Un desarrollador tiene que programar la aplicación de tal manera que se optimicen los datos que se consumen. A través de este artículo, nuestro objetivo es ampliar nuestro conocimiento sobre cómo extraer el tipo de conexión actual y mostrarlo en forma de una aplicación de Android. Usaremos los métodos disponibles (sin elementos de terceros) para mostrar los cambios de información (Tipo de conexión) en tiempo real. qué artículo. Tenga en cuenta que vamos a implementar este proyecto utilizando el Lenguaje Kotlin  . 

Sample GIF

Acercarse

Para obtener el tipo de conexión actual (Wi-Fi o Datos Móviles) en Android seguiremos los siguientes pasos:

Paso 1: Crear un nuevo proyecto

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Kotlin como lenguaje de programación.

Paso 2: trabajar con el archivo AndroidManifest.xml

Vaya al archivo AndroidManifest.xml y agregue estos permisos de uso: ACCESS_NETWORK_STATE .

<usos-permiso android:name=”android.permission.ACCESS_NETWORK_STATE” />

A continuación se muestra el código completo del archivo AndroidManifest.xml .

XML

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="org.geeksforgeeks.connectioninfo">
   
    <!--Add this permission to Access the Network State-->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
   
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
 
</manifest>

Paso 3: trabajar con el archivo activity_main.xml

Ahora vaya al archivo activity_main.xml que representa la interfaz de usuario de la aplicación y cree un TextView donde transmitiríamos la información del archivo MainActivity.kt . A continuación se muestra el código para el  archivo activity_main.xml .

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
 
    <!--This textView will show the current connection status-->
    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Not Connected" />
 
</RelativeLayout>

Paso 4: trabajar con el archivo MainActivity.kt

Vaya al archivo MainActivity.kt y consulte el siguiente código. A continuación se muestra el código del  archivo MainActivity.kt . Se agregan comentarios dentro del código para comprender el código con más detalle.

Kotlin

import android.content.Context
import android.net.ConnectivityManager
import android.os.Bundle
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
 
class MainActivity : AppCompatActivity() {
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
 
        // Declaring the textView from the layout file
        // This textView will display the type of connection
        // Either WIFI, MOBILE DATA, or Not Connected
        val networkConnectionStatus = findViewById<TextView>(R.id.tv)
 
        // A Thread that will continuously monitor the Connection Type
        Thread(Runnable {
            while (true) {
                // This string is displayed when device is not connected
                // to either of the aforementioned states
                var conStant: String = "Not Connected"
 
                // Invoking the Connectivity Manager
                val cm = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
 
                // Fetching the Network Information
                val netInfo = cm.allNetworkInfo
 
                // Finding if Network Info typeName is WIFI or MOBILE (Constants)
                // If found, the conStant string is supplied WIFI or MOBILE DATA
                // respectively. The supplied data is a Variable
                for (ni in netInfo) {
                    if (ni.typeName.equals("WIFI", ignoreCase = true))
                        if (ni.isConnected) conStant = "WIFI"
                    if (ni.typeName.equals("MOBILE", ignoreCase = true))
                        if (ni.isConnected) conStant = "MOBILE DATA"
                }
 
                // To update the layout elements in real-time, use runOnUiThread method
                // We are setting the text in the TextView as the string conState
                runOnUiThread {
                    networkConnectionStatus.text = conStant
                }
            }
        }).start() // Starting the thread
    }
}

Salida: ejecutar en dispositivo físico

Nota: tener una interfaz de red activa no garantiza que un servicio de red en particular esté disponible. Los problemas de red, el tiempo de inactividad del servidor, la señal baja, los portales cautivos, los filtros de contenido y similares pueden evitar que su aplicación llegue a un servidor. Por ejemplo, no puede saber si su aplicación puede comunicarse con el servidor de Twitter hasta que la aplicación reciba una llamada de respuesta válida del servicio de Twitter.

Publicación traducida automáticamente

Artículo escrito por aashaypawar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *