Verifique programáticamente la velocidad de la red en Android

La velocidad de la red se puede definir como el número total de paquetes que intercambian el cliente y el servidor por segundo, generalmente calculado en Megabits por segundo (Mbps). Un bit es un 0 o un 1. 1 megabit implica 1 millón de bits. Por lo general, el tamaño del paquete depende del protocolo y de varios otros factores y, por lo general, varía a gran escala. En este artículo, se implementa un programa que nos obtiene velocidades de carga y descarga con el servidor. Tenga en cuenta que el programa es exitoso cuando el dispositivo está conectado a una red.

Este programa podría usarse tanto para la investigación como para la optimización:

  • Investigación: se podría derivar el contenido y las velocidades disponibles para correlacionar la dependencia de la red.
  • Optimización: uno podría monitorear continuamente la velocidad y el contexto, para evitar la conexión cuando no se requiera o reducir la calidad de un video que se transmite dependiendo de las velocidades actuales.

Acercarse:

Paso 1: crea una actividad vacía en Android Studio. Para crear uno, siga este artículo : https://www.geeksforgeeks.org/android-how-to-create-start-a-new-project-in-android-studio/ . Compruebe si el idioma principal seleccionado es Kotlin .

Paso 2: vaya al archivo AndroidManifest.xml y agregue el permiso de uso ACCESS_NETWORK_STATE .

XML

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="org.geeksforgeeks.networkspeed">
  
  <!--Add this permission-->
    <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: en el archivo activity_main.xml, agregue un botón. Bellow es el código para el mismo.

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
  
    <!--Create a Button-->
    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Show Speed"
        android:layout_centerInParent="true"
        />
  
</RelativeLayout>

Paso 4: en MainActivity.kt, agregue el siguiente código. setOnClickListener se agrega con el botón, que cuando se hace clic muestra la velocidad de carga y la velocidad de descarga como un brindis en la pantalla.

Kotlin

package org.geeksforgeeks.networkspeed
  
import android.content.Context
import android.net.ConnectivityManager
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.Toast
import androidx.annotation.RequiresApi
  
class MainActivity : AppCompatActivity() {
    @RequiresApi(Build.VERSION_CODES.M)
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // Declaring Button from the layout file
        val btn = findViewById<Button>(R.id.btn)
  
        // Action when the button id clicked
        btn.setOnClickListener {
  
            // Connectivity Manager
            val cm = applicationContext.getSystemService
          (Context.CONNECTIVITY_SERVICE) as ConnectivityManager
  
            // Network Capabilities of Active Network
            val nc = cm.getNetworkCapabilities(cm.activeNetwork)
  
            // DownSpeed in MBPS
            val downSpeed = (nc.linkDownstreamBandwidthKbps)/1000
  
            // UpSpeed  in MBPS
            val upSpeed = (nc.linkUpstreamBandwidthKbps)/1000
  
            // Toast to Display DownSpeed and UpSpeed
            Toast.makeText(applicationContext,
                           "Up Speed: $upSpeed Mbps \nDown Speed: $downSpeed Mbps",
                           Toast.LENGTH_LONG).show()
        }
    }
}

Producción:

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 *