Introducción general a Bluetooth
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
La plataforma de Android admite la pila de red Bluetooth, que permite que un dispositivo intercambie datos de forma inalámbrica con otros dispositivos Bluetooth. El framework de la app proporciona acceso a la funcionalidad de Bluetooth a través de las APIs de Bluetooth. Estas APIs permiten que las apps se conecten a otros dispositivos Bluetooth, lo que habilita funciones inalámbricas punto a punto y multipunto.
Con las APIs de Bluetooth, una app puede realizar lo siguiente:
- Busca otros dispositivos Bluetooth.
- Consulta el adaptador local de Bluetooth en busca de dispositivos Bluetooth vinculados.
- Establecer canales RFCOMM
- Conéctate a otros dispositivos mediante el descubrimiento de servicios.
- Transfiere datos hacia y desde otros dispositivos.
- Administrar varias conexiones
Este tema se enfoca en el Bluetooth clásico. La versión clásica de Bluetooth es la opción correcta para las operaciones que consumen más batería, como la transmisión y la comunicación entre dispositivos. Para dispositivos Bluetooth con bajos requisitos de energía, considera usar conexiones de Bluetooth de bajo consumo.
En esta documentación, se describen diferentes perfiles de Bluetooth y se explica cómo usar las APIs de Bluetooth para realizar las cuatro tareas principales necesarias a fin de comunicarse mediante Bluetooth:
- Configurando Bluetooth.
- Se están buscando dispositivos sincronizados o disponibles en el área local.
- Conexión de dispositivos.
- Transferir datos entre dispositivos
Para ver una demostración de cómo usar las APIs de Bluetooth, consulta la app de ejemplo Chat de Bluetooth.
Conceptos básicos
Para que los dispositivos con Bluetooth puedan transmitir datos entre sí, primero deben formar un canal de comunicación mediante un proceso de vinculación. Un dispositivo, un dispositivo detectable, está disponible para las solicitudes de conexión entrantes.
Otro dispositivo encuentra el dispositivo detectable mediante un proceso de descubrimiento de servicios.
Después de que el dispositivo detectable acepta la solicitud de vinculación, los dos dispositivos completan un proceso de vinculación en el que intercambian llaves de seguridad. Los dispositivos almacenan estas claves en caché para usarlas más adelante. Una vez finalizados los procesos de vinculación y vinculación, los dos dispositivos intercambian información. Cuando se completa la sesión, el dispositivo que inició la solicitud de vinculación libera el canal que lo había vinculado al dispositivo detectable. Sin embargo, los dos dispositivos permanecen vinculados, de modo que pueden volver a conectarse automáticamente durante una sesión futura, siempre y cuando estén dentro del rango del otro y ninguno de los dispositivos haya eliminado la vinculación.
El uso de las APIs de Bluetooth requiere declarar varios permisos en tu archivo de manifiesto. Una vez que tu app tenga permiso para usar Bluetooth, deberá acceder a BluetoothAdapter
y determinar si Bluetooth está disponible en el dispositivo.
Si la conexión Bluetooth está disponible, sigue estos tres pasos para establecer una conexión:
Algunos dispositivos usan un perfil de Bluetooth específico que declara los datos que proporciona.
Clases fundamentales e interfaces
Todas las APIs de Bluetooth están disponibles en el paquete android.bluetooth
.
A continuación, se indican las clases e interfaces que necesitas para crear conexiones Bluetooth:
BluetoothAdapter
- Representa el adaptador local de Bluetooth (radio Bluetooth). El
BluetoothAdapter
es el punto de entrada de todas las interacciones Bluetooth. De esta manera, puedes descubrir otros dispositivos Bluetooth, consultar una lista de dispositivos vinculados (vinculados), crear una instancia de BluetoothDevice
con una dirección MAC conocida y crear un BluetoothServerSocket
para escuchar las comunicaciones de otros dispositivos.
BluetoothDevice
- Representa un dispositivo Bluetooth remoto. Úsalo para solicitar una conexión con un dispositivo remoto a través de un
BluetoothSocket
o para consultar información sobre el dispositivo, como su nombre, dirección, clase y estado de conexión.
BluetoothSocket
- Representa la interfaz de un socket Bluetooth (similar a un
Socket
de TCP). Este es el punto de conexión que permite que una app intercambie datos con otro dispositivo Bluetooth mediante InputStream
y OutputStream
.
BluetoothServerSocket
- Representa un socket de servidor abierto que escucha las solicitudes entrantes (similar a un
ServerSocket
de TCP). Para conectar dos dispositivos, un dispositivo debe abrir un socket de servidor con esta clase. Cuando un dispositivo Bluetooth remoto envía una solicitud de conexión a este dispositivo, este la acepta y devuelve un BluetoothSocket
conectado.
BluetoothClass
- Describe las características y capacidades generales de un dispositivo Bluetooth.
Se trata de un conjunto de propiedades de solo lectura que define las clases y los servicios del dispositivo. Si bien esta información brinda una sugerencia útil sobre el tipo de dispositivo, los atributos de esta clase no necesariamente describen todos los perfiles y servicios de Bluetooth que admite el dispositivo.
BluetoothProfile
- Interfaz que representa un perfil de Bluetooth. Un perfil de Bluetooth es una especificación de interfaz inalámbrica para la comunicación entre dispositivos basada en Bluetooth. Un ejemplo es el perfil de manos libres. Para obtener más información sobre los perfiles, consulta Perfiles de Bluetooth.
BluetoothHeadset
- Proporciona compatibilidad con auriculares Bluetooth para usarlos con teléfonos móviles. Esto incluye el perfil de auriculares Bluetooth y el perfil de manos libres (v1.5).
BluetoothA2dp
- Define el modo en que se puede transmitir audio de alta calidad de un dispositivo a otro a través de una conexión Bluetooth mediante el perfil de distribución de audio avanzada (A2DP).
BluetoothHealth
- Representa un proxy de perfil de dispositivos de salud que controla el servicio Bluetooth.
BluetoothHealthCallback
- Es una clase abstracta que se usa para implementar devoluciones de llamada de
BluetoothHealth
. Debes extender esta clase e implementar los métodos de devolución de llamada para recibir actualizaciones sobre los cambios en el estado de registro de la app y el estado del canal de Bluetooth.
BluetoothHealthAppConfiguration
- Representa la configuración de una app que la app de salud de terceros de Bluetooth registra para comunicarse con un dispositivo de salud Bluetooth remoto.
BluetoothProfile.ServiceListener
- Una interfaz que notifica a los clientes de comunicación entre procesos (IPC) de
BluetoothProfile
cuando se conectan al servicio interno que ejecuta un perfil en particular o se desconectan de este.
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-26 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-07-26 (UTC)"],[],[],null,["# Bluetooth overview\n\nThe Android platform includes support for the Bluetooth network stack, which\nallows a device to wirelessly exchange data with other Bluetooth devices. The\napp framework provides access to the Bluetooth functionality through Bluetooth\nAPIs. These APIs let apps connect to other Bluetooth devices, enabling\npoint-to-point and multipoint wireless features.\n\nUsing the Bluetooth APIs, an app can perform the following:\n\n- Scan for other Bluetooth devices.\n- Query the local Bluetooth adapter for paired Bluetooth devices.\n- Establish RFCOMM channels.\n- Connect to other devices through service discovery.\n- Transfer data to and from other devices.\n- Manage multiple connections.\n\nThis topic focuses on *Classic Bluetooth* . Classic Bluetooth is the right choice\nfor more battery-intensive operations, which include streaming and communicating\nbetween devices. For Bluetooth devices with low power requirements, consider\nusing [Bluetooth Low Energy](/develop/connectivity/bluetooth/ble-overview)\nconnections.\n\nThis documentation describes different Bluetooth\n[profiles](/develop/connectivity/bluetooth/profiles) and explains how to\nuse the Bluetooth APIs to accomplish the four major tasks necessary to\ncommunicate using Bluetooth:\n\n- Setting up Bluetooth.\n- Finding devices that are either paired or available in the local area.\n- Connecting devices.\n- Transferring data between devices.\n\nFor a demonstration of using the Bluetooth APIs, see the [Bluetooth Chat sample\napp](https://github.com/android/connectivity-samples/tree/master/BluetoothChat).\n\nThe basics\n----------\n\nFor Bluetooth-enabled devices to transmit data between each other, they must\nfirst form a channel of communication using a pairing process. One device, a\ndiscoverable device, makes itself available for incoming connection requests.\nAnother device finds the discoverable device using a service discovery process.\nAfter the discoverable device accepts the pairing request, the two devices\ncomplete a bonding process in which they exchange security keys. The devices\ncache these keys for later use. After the pairing and bonding processes are\ncomplete, the two devices exchange information. When the session is complete,\nthe device that initiated the pairing request releases the channel that had\nlinked it to the discoverable device. The two devices remain bonded, however, so\nthey can reconnect automatically during a future session as long as they're in\nrange of each other and neither device has removed the bond.\n\nUse of the Bluetooth APIs requires\n[declaring several permissions](/develop/connectivity/bluetooth/bt-permissions#declare)\nin your manifest file. Once your app has permission to use Bluetooth, your app\nneeds to access the\n[`BluetoothAdapter`](/reference/android/bluetooth/BluetoothAdapter) and\n[determine if Bluetooth is available on the device](/develop/connectivity/bluetooth/setup).\nIf Bluetooth is available, there are three steps to make a connection:\n\n- [Find nearby Bluetooth\n devices](/develop/connectivity/bluetooth/find-bluetooth-devices), either devices that are already paired or new ones.\n- [Connect to a Bluetooth\n device](/develop/connectivity/bluetooth/connect-bluetooth-devices).\n- [Transfer data with the connected\n device](/develop/connectivity/bluetooth/transfer-data).\n\nCertain devices use a specific [Bluetooth\nprofile](/develop/connectivity/bluetooth/profiles) that declares the data\nit provides.\n\nKey classes and interfaces\n--------------------------\n\nAll of the Bluetooth APIs are available in the\n[`android.bluetooth`](/reference/android/bluetooth/package-summary) package.\nThe following are the classes and interfaces you need in order to create\nBluetooth connections:\n\n[`BluetoothAdapter`](/reference/android/bluetooth/BluetoothAdapter)\n: Represents the local Bluetooth adapter (Bluetooth radio). The\n `BluetoothAdapter` is the entry-point for all Bluetooth interaction. Using\n this, you can discover other Bluetooth devices, query a list of bonded\n (paired) devices, instantiate a\n `BluetoothDevice` using a known MAC address, and create a\n `BluetoothServerSocket` to listen for communications from other devices.\n\n[`BluetoothDevice`](/reference/android/bluetooth/BluetoothDevice)\n: Represents a remote Bluetooth device. Use this to request a connection with a\n remote device through a `BluetoothSocket` or query information about the\n device such as its name, address, class, and bonding state.\n\n[`BluetoothSocket`](/reference/android/bluetooth/BluetoothSocket)\n: Represents the interface for a Bluetooth socket (similar to a TCP\n [`Socket`](/reference/java/net/Socket)). This is the connection point that\n allows an app to exchange data with another Bluetooth device using\n [`InputStream`](/reference/java/io/InputStream) and\n [`OutputStream`](/reference/java/io/OutputStream).\n\n[`BluetoothServerSocket`](/reference/android/bluetooth/BluetoothServerSocket)\n: Represents an open server socket that listens for incoming requests (similar\n to a TCP [`ServerSocket`](/reference/java/net/ServerSocket)). In order to\n connect two devices, one device must open a server socket with this\n class. When a remote Bluetooth device makes a connection request to this\n device, the device accepts the connection and then returns a connected\n `BluetoothSocket`.\n\n[`BluetoothClass`](/reference/android/bluetooth/BluetoothClass)\n: Describes the general characteristics and capabilities of a Bluetooth device.\n This is a read-only set of properties that defines the device's classes and\n services. Although this information provides a useful hint regarding a\n device's type, the attributes of this class don't necessarily describe all\n Bluetooth profiles and services that the device supports.\n\n[`BluetoothProfile`](/reference/android/bluetooth/BluetoothProfile)\n: An interface that represents a Bluetooth profile. A Bluetooth profile is a\n wireless interface specification for Bluetooth-based communication between\n devices. An example is the Hands-Free profile. For more discussion of\n profiles, see [Bluetooth profiles](/develop/connectivity/bluetooth/profiles).\n\n[`BluetoothHeadset`](/reference/android/bluetooth/BluetoothHeadset)\n: Provides support for Bluetooth headsets to be used with mobile phones. This\n includes both the Bluetooth Headset profile and the Hands-Free (v1.5) profile.\n\n[`BluetoothA2dp`](/reference/android/bluetooth/BluetoothA2dp)\n: Defines how high-quality audio can be streamed from one device to another over\n a Bluetooth connection using the Advanced Audio Distribution Profile (A2DP).\n\n[`BluetoothHealth`](/reference/android/bluetooth/BluetoothHealth)\n: Represents a Health Device Profile proxy that controls the Bluetooth service.\n\n[`BluetoothHealthCallback`](/reference/android/bluetooth/BluetoothHealthCallback)\n: An abstract class that you use to implement `BluetoothHealth` callbacks. You\n must extend this class and implement the callback methods to receive updates\n about changes in the app's registration state and Bluetooth channel\n state.\n\n[`BluetoothHealthAppConfiguration`](/reference/android/bluetooth/BluetoothHealthAppConfiguration)\n: Represents an app configuration that the Bluetooth Health third-party\n app registers to communicate with a remote Bluetooth health device.\n\n[`BluetoothProfile.ServiceListener`](/reference/android/bluetooth/BluetoothProfile.ServiceListener)\n: An interface that notifies `BluetoothProfile` interprocess communication (IPC)\n clients when they have been connected to or disconnected from the internal\n service that runs a particular profile."]]