En los dispositivos Android, Bluetooth es un protocolo de red de comunicación que permite que los dispositivos se conecten de forma inalámbrica para intercambiar datos con otros dispositivos Bluetooth. En general, podemos hacer uso de la API de Bluetooth para implementar funcionalidades de Bluetooth, como habilitar o deshabilitar Bluetooth, buscar dispositivos Bluetooth disponibles, conectarse con los dispositivos y administrar la transferencia de datos entre dispositivos dentro del rango. En Android, adaptador BluetoothLa clase realiza todas las actividades relacionadas con Bluetooth. De manera predeterminada, el dispositivo Bluetooth está en un modo no detectable. Esto significa que si encendemos el Bluetooth en un dispositivo, solo es visible para aquellos emparejados anteriormente con él. Este dispositivo es invisible en dispositivos que no sean los emparejados. Para hacer que este dispositivo sea visible, activamos la opción Visible, que hace que el dispositivo sea global a su vecindad. Este dispositivo ahora aparece en todas las listas, ya sean los dispositivos nuevos o los emparejados anteriormente. Las aplicaciones que involucran el emparejamiento de un dispositivo de música o un reloj digital (sincronización mediante transferencias Bluetooth) con otros dispositivos son bastante simples. Estos dispositivos se configuran globalmente y cualquier otro dispositivo puede descubrirlos. Para que esto sea posible en un móvil Android, uno puede ir a la configuración de Bluetooth y hacerlo global o reconocible.kotlin
Implementación
- La aplicación explicada en este artículo es básicamente para probar si podemos invocar métodos mediante programación para cumplir con nuestro propósito.
- Creamos una aplicación móvil Android que consta de tres botones; Activar, Visible y Desactivar , haciendo que las funcionalidades invoquen varios métodos de adaptador Bluetooth.
- Los cambios de esta aplicación son globales, es decir, Bluetooth continuará encendido si no se hace clic en el botón Apagar, o cualquier otra versión relacionada.
- Para que el dispositivo sea reconocible en la lista de otros dispositivos, se debe inicializar una nueva actividad mediante startActivityForResult(intent, int) con la intención ACTION_REQUEST_DISCOVERABLE .
Nota: Es importante que el Bluetooth esté presente y en un modo de encendido para que sea detectable.
Implementación paso a paso
Para mostrar programáticamente una lista de dispositivos emparejados con Bluetooth contra nuestro dispositivo en Android, siga 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: Trabajando con el archivo AndroidManifest.xml
Vaya al archivo AndroidManifest.xml y agregue estos permisos requeridos por el adaptador Bluetooth: BLUETOOTH, BLUETOOTH_ADMIN y ACCESS_COARSE_LOCATION .
<usos-permiso android:name=”android.permission.BLUETOOTH”/>
<usos-permiso android:name=”android.permission.BLUETOOTH_ADMIN”/>
<usos-permiso android:name=”android.permission.ACCESS_COARSE_LOCATION”/>
AndroidManifest.xml
XML
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.geeksforgeeks.bluetoothdiscoverable"> <!--Permissions Required for accessing Bluetooth services--> <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <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. Cree tres botones , uno para encender el Bluetooth del dispositivo, otro para hacer que el Bluetooth del dispositivo sea detectable en otros dispositivos y otro para apagar el servicio Bluetooth. actividad_principal.xml
XML
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="10dp" android:paddingRight="10dp"> <!--Turn ON Button--> <Button android:id="@+id/btnOn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toLeftOf="@id/btnDiscoverable" android:text="Turn ON" /> <!--Discoverable Button--> <Button android:id="@+id/btnDiscoverable" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:text="Discoverable" /> <!--Turn OFF Button--> <Button android:id="@+id/btnOFF" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@+id/btnDiscoverable" android:text="Turn OFF" /> </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.bluetooth.BluetoothAdapter import android.content.Intent import android.os.Bundle import android.widget.Button import android.widget.Toast import androidx.appcompat.app.AppCompatActivity class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // Declare the three buttons from the layout file val btnOn = findViewById<Button>(R.id.btnOn) val btnOff = findViewById<Button>(R.id.btnOFF) val btnDisc = findViewById<Button>(R.id.btnDiscoverable) // Initialize the Bluetooth Adapter val bAdapter = BluetoothAdapter.getDefaultAdapter() // Action when Turn ON Button is clicked btnOn.setOnClickListener { // If Bluetooth support or API is absent or private in the device if (bAdapter == null) { Toast.makeText(applicationContext, "Bluetooth Not Supported", Toast.LENGTH_SHORT).show() } else { // Turn ON the Bluetooth using an Intent and making a Toast Message if (!bAdapter.isEnabled) { startActivityForResult(Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE), 1) Toast.makeText(applicationContext, "Bluetooth Turned ON", Toast.LENGTH_SHORT).show() } } } // Action when Turn OFF Button is clicked btnOff.setOnClickListener { // Disable the Bluetooth Adapter and make a Toast bAdapter!!.disable() Toast.makeText(applicationContext, "Bluetooth Turned OFF", Toast.LENGTH_SHORT).show() } // Action when Discoverable Button is clicked btnDisc.setOnClickListener { // Make the Bluetooth in a Discovering State and make a Toast if (!bAdapter!!.isDiscovering) { startActivityForResult(Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE), 1) Toast.makeText(applicationContext, "Making Device Discoverable", Toast.LENGTH_SHORT).show() } } } }
Salida: ejecutar en dispositivo físico
La secuencia de eventos de entrada en el video de salida es:
- Haga clic en ON (para encender el Bluetooth y comprobar si el botón funciona)
- Haga clic en APAGADO (para apagar el Bluetooth y verificar si el botón funciona)
- Encienda el clic (encienda el Bluetooth nuevamente)
- Clic reconocible (hacer que el Bluetooth del dispositivo sea reconocible)
- Apague el clic (apague el Bluetooth)
Establecer tiempo de descubrimiento personalizado
De forma predeterminada, el dispositivo permanece en modo Descubrir durante 120 segundos . Podemos cambiar este valor proporcionando un valor específico a la intención usando putExtra:
Kotlin
startActivityForResult(Intent (BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE) .putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 40) , 1)
Esto cambia el valor predeterminado a 40 segundos .
Publicación traducida automáticamente
Artículo escrito por aashaypawar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA