srs reconoce por parlantes parlante para mejorar fast conectar conecta como bocinas app aplicacion android bluetooth nfc

android - por - parlante sony no reconoce bluetooth



Emparejamiento Bluetooth sin confirmaciĆ³n del usuario (6)

BT versión 2.0 o inferior - Debería poder emparejar / vincular usando un código PIN estándar, ingresado mediante programación, p. Ej., 1234 o 0000. Esto no es muy seguro, pero muchos dispositivos BT lo hacen.

BT versión 2.1 o superior - Mode 4 Secure Simple Pairing El modelo "solo funciona" se puede utilizar. Utiliza cifrado elíptico (lo que sea que sea) y es muy seguro, pero está abierto para los ataques de Man In The Middle. En comparación con el viejo enfoque de código pin ''0000 '', está a años luz de distancia. Esto no requiere ninguna entrada del usuario.

Esto está de acuerdo con las especificaciones de Bluetooth, pero lo que puede usar depende de qué versión del estándar Bluetooth sea compatible con su pila y qué API tenga.

¿Puedo emparejar dos dispositivos a través de Bluetooth sin la necesidad de confirmar esto en la interfaz de usuario? Acepte emparejar estos dispositivos. ¿Puedo intercambiar algunos datos adicionales, por ejemplo, NFC, y luego sincronizar esos dos dispositivos de manera segura a través de Bluetooth sin ninguna acción adicional del usuario?


Bueno, esto realmente debería dividirse en 2 partes:

  1. ¿Puede emparejar 2 dispositivos Bluetooth sin pasar por un apretón de manos de Bluetooth? No, no puedes. Eso está incluido en el protocolo, así que no hay forma de evitar esto.
  2. ¿Puedes realizar el apretón de manos sin una interfaz de usuario? Sí, puedes: eso es solo código.

No estoy seguro de cómo lo haces en Windows land, pero en * nix land hay funciones ocultas en la pila de Bluez que te permiten recibir notificaciones sobre cuándo aparece un nuevo dispositivo y enviar el código de sincronización (claramente tiene que haber estas funciones: eso es lo que usa la interfaz de usuario). Dado el tiempo y la experiencia suficientes, estoy seguro de que podría encontrar la manera de escribir su propia versión de la aplicación Bluetooth Settings de alguna manera:

  • Detectado un nuevo dispositivo había llegado
  • Miró la dirección Mac nombre / bluetooth y verificó alguna base de datos interna para el código de sincronización para usar.
  • Envió el código de sincronización y completó la operación

Todo sin tener que abrir una interfaz de usuario.

Si continúas y escribes el código ME ENCANTARÍA tenerlo en mis manos.


Respuesta corta: cuando envío archivos entre dispositivos con OBEX, casi nunca me piden que me empareje, por lo que es ciertamente posible.

1) Una aplicación y el dispositivo en sí pueden configurarse para que necesiten / no necesiten modos de autenticación, por lo que a menudo no era necesario emparejarlos. Por ejemplo, la mayoría de los servidores OBEX (OPP) no necesitan ninguna autenticación, por lo que no es necesario vincularlos o vincularlos.

Presumiblemente, la respuesta de "Diseños inalámbricos" estaba cubriendo ese caso.

2) Luego, si el dispositivo / aplicación requirieron un enlace:

2.1) Antes de la v2.1 para el emparejamiento, los dos dispositivos necesitaban una contraseña / PIN coincidentes. Por lo tanto, esto requiere la participación del usuario (para ingresar los PIN) o conocimiento en el software para conocer el PIN: ya sea en la aplicación if pin callback send pin="1234" o smarts en el sistema operativo como BlueZ y Win7 (consulte la Diapositiva 20 en mi Bluetooth en Windows 7 doc ) que tiene lógica como: if(remotedevice=headset) then expectedPin ="0000" . No sé lo que hace Android

2.2) En v2.1 Secure Simple Pairing (SSP) se agregó. Que cambia emparejamiento a:

if (either is pre-v2.1) then Legacy else if (Out-Of-Band channel) then OutOfBand else if (neither have "Man-in-the-Middle Protection Required") then (i.e. both have "Man-in-the-Middle Protection _Not_ Required") Just-Works else Depending on the two devices'' "IO Capabilities", either NumericComparison or Passkey. Passkey is used when one device has KeyboardOnly -- and the peer device _isn''t_ NoInputNoOutput. endif

De la guía del usuario BluetoothWin32Authentication de 32feet.NET , vea también las secciones de SSP en [ 1 ]

Entonces, para que el emparejamiento sea espontáneo, se necesita "JustWorks" o "Out-of-Band", por ejemplo, su sugerencia de NFC.

Espero que ayude...


Sí, es posible en teoría según lo define la especificación. Sin embargo, todavía no hay una implementación práctica que permita esto.

Consulte: Especificación técnica del traspaso de conexión del Foro NFC http://www.nfc-forum.org/specs/spec_list/

Citando la especificación sobre la seguridad: "El protocolo de transferencia requiere la transmisión de datos y credenciales de acceso a la red (los datos de configuración del operador) para permitir que un dispositivo se conecte a una red inalámbrica proporcionada por otro dispositivo. Debido a la gran proximidad necesaria para la comunicación entre Dispositivos y etiquetas NFC, la escucha de los datos de configuración del operador es difícil, pero no imposible, sin reconocimiento por parte del propietario legítimo de los dispositivos. La transmisión de datos de configuración del operador a dispositivos que se pueden acercar se considera legítima dentro del alcance de esta especificación "


Si está preguntando si puede emparejar dos dispositivos sin que el usuario apruebe el emparejamiento, no se puede hacer, es una característica de seguridad. Si está sincronizado mediante Bluetooth, no es necesario intercambiar datos a través de NFC, solo intercambie datos a través del enlace Bluetooth.

No creo que pueda eludir la seguridad de Bluetooth pasando un paquete de autenticación a través de NFC, pero podría estar equivocado.


Esta necesidad es exactamente la razón createInsecureRfcommSocketToServiceRecord() cual createInsecureRfcommSocketToServiceRecord() se agregó a BluetoothDevice partir de Android 2.3.3 (API de nivel 10) ( SDK Docs ) ... antes de eso, no había compatibilidad con SDK para esto. Fue diseñado para permitir que Android se conecte a dispositivos sin interfaces de usuario para ingresar un código PIN (como un dispositivo integrado), pero también sirve para configurar una conexión entre dos dispositivos sin la entrada de PIN del usuario.

El método corolario listenUsingInsecureRfcommWithServiceRecord() en BluetoothAdapter se usa para aceptar estos tipos de conexiones. No es una violación de seguridad porque los métodos deben usarse como un par. No puede usar esto para simplemente intentar emparejar con cualquier dispositivo Bluetooth antiguo.

También puede hacer comunicaciones de corto alcance a través de NFC, pero ese hardware es menos prominente en dispositivos Android. Definitivamente elija uno, y no intente crear una solución que use ambos.

¡Espero que ayude!

PD: También hay formas de hacer esto en muchos dispositivos antes de 2.3 usando la reflexión, porque el código sí existía ... pero no necesariamente lo recomendaría para aplicaciones de producción distribuidas en masa. Vea este .