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 .
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