Aplicaciones Android

Emparejamiento Bluetooth-Diseño Android

Ya en febrero de 2020, escribí un artículo sobre cómo la ubicación se vuelve más complicada en términos de privacidad.La principal motivación de esta publicación es la necesidad de escanear y emparejar por Bluetooth ACCESS_LOCATION_FINE Permisos que pueden confundir a los usuarios. ¿Por qué una aplicación conectada a un dispositivo Bluetooth necesita acceder a mi ubicación? La razón de esto es que la ubicación se puede determinar a partir de dispositivos conocidos (como balizas). Estos pueden tener ubicaciones fijas. Android 12 presenta nuevos permisos que ya no son necesarios ACCESS_LOCATION_FINEEsto es realmente bueno. Esto hará que los usuarios se sientan menos confundidos. También es más fácil para los desarrolladores justificar ciertos permisos.Sin embargo, no tenemos que esperar hasta Android 12 para eliminar ACCESS_LOCATION_FINE Al realizar la exploración y el emparejamiento de Bluetooth. En este artículo, exploraremos estas opciones.

Antes de comenzar, necesito establecer algunas expectativas. Esta no será una guía práctica detallada. Pero más es resumir las diversas opciones disponibles para diferentes versiones de Android.Espero que permita a las personas determinar la estrategia correcta a utilizar. minSdkVersion Su aplicación y otros requisitos.

Android 12

Primero veamos los nuevos permisos agregados en Android 12.estos son BLUETOOTH_SCAN con BLUETOOTH_CONNECT. Son un sustituto directo de la tradición. BLUETOOTH_ADMIN con BLUETOOTH Permisos, respectivamente.La diferencia es que también se requieren permisos heredados ACCESS_LOCATION_FINE Debe solicitarse como permiso de ejecución.

Esto BLUETOOTH_SCAN Los permisos tienen un calificador opcional para declarar si la aplicación utilizará datos escaneados para detectar la ubicación. Los resultados especificados no se utilizarán para determinar la ubicación, lo que puede dar como resultado un conjunto de resultados de escaneo más pequeño. Se puede omitir cualquier dispositivo que pueda determinar la ubicación (como una baliza).Si especifica que se utilizará para el posicionamiento, también debe obtener ACCESS_LOCATION_FINE De lo contrario, el escaneo fallará.

LEER  Todo sobre subprocesos múltiples: los conceptos básicos.En este momento, posibles problemas al hacer subprocesos múltiples y cómo... | por GodDB | febrero de 2022

Antes de Android 12

Pocas aplicaciones pueden usar Android 12 como minSdkVersion. Por lo tanto, debemos declarar los permisos relacionados para diferentes niveles de API:

Aquí declaramos ambos BLUETOOTH con BLUETOOTH_ADMIN Permisos, pero cada uno tiene android:maxSdkVersion="30" Calificadores. Estos permisos solo son necesarios para dispositivos que ejecutan API 30 o inferior.

Esto BLUETOOTH_SCAN Los permisos tienen android:usesPermissionFlags="neverForLocation" Calificadores.No necesita ACCESS_FINE_LOCATION Como resultado, se obtuvo el permiso.Por tanto, también podemos incluir android:maxSdkVersion="30" El calificador del permiso.

Por lo tanto, no necesitamos permisos de ubicación para dispositivos con Android 12 o superior. Pero lo hacemos a un nivel de API más bajo.

En realidad, existe un método alternativo para realizar una exploración de Bluetooth por completo. Esto es para posponer las cosas al administrador de dispositivos complementarios. Android 8.0 (API 26) introdujo un administrador de dispositivos complementario. Podemos delegarlo en el administrador de dispositivos complementarios en lugar de realizar el escaneo y el emparejamiento nosotros mismos. Una buena simulación aquí es cuando se captura desde la cámara. Si necesitamos un control estricto, podemos usar una de las API de la cámara para hacerlo nosotros mismos.De lo contrario, podemos usar ACTION_IMAGE_CAPTURE Tiene la intención de posponer esto para el servicio del sistema.

Administrador de dispositivos de apoyo

El administrador de dispositivos de apoyo funciona aproximadamente de la misma manera. Al igual que en el ejemplo de la cámara, una ventaja real es que nuestra aplicación no necesita ningún permiso para realizar esta operación. No es un permiso de Bluetooth ni un permiso de ubicación.Por supuesto, si necesitamos conectarnos al dispositivo después de emparejarnos con el administrador de dispositivos de soporte, entonces necesitamos BLUETOOTH o BLUETOOTH_CONNECT Permisos. Pero estos no son permisos de tiempo de ejecución. Tampoco necesitan permisos de ubicación.

Otra ventaja de usar el administrador de dispositivos complementario es que elimina la complejidad y mucho trabajo de la interfaz de usuario. Escanear y emparejar a través de Bluetooth puede ser complicado, especialmente cuando diferentes dispositivos se comportan de manera diferente. El jefe de equipo de apoyo nos exime de esta responsabilidad.

El precio de esto es similar al del ejemplo de la cámara. Una vez que le damos el control al administrador de dispositivos de soporte, perdemos la propiedad de UI / UX. Esto significa que no podremos controlar la IU de selección de dispositivo.

Personalmente, creo que esta es una compensación que vale la pena. ¡Aunque muchos propietarios de productos y diseñadores pueden estar en desacuerdo! Si tengo que convencer a la gente, adoptaré el enfoque de que deberíamos utilizar un administrador de dispositivos complementario. Esto proporcionará una implementación robusta y confiable con un esfuerzo mínimo. Luego, podemos agregar tareas a la lista de tareas pendientes para poder volver a visitarlas más tarde y hacer algunas cosas más personalizadas.

Panorama general

Consideremos un minSdkVersion="21" solicitud. El hecho inevitable es que debemos comportarnos de manera diferente en diferentes niveles de API.

Si queremos utilizar el administrador de dispositivos complementario, solo puede funcionar en dispositivos API 26 y superiores. Por lo tanto, necesitamos escanear y emparejar manualmente los dispositivos más antiguos que ejecutan los niveles de API 21-25. Luego, en dispositivos posteriores, podemos usar el administrador de dispositivos de soporte.Esto significa ubicación y BLUETOOTH_ADMIN El permiso más alto requiere API nivel 25, podemos usar android:maxSdkVersion="25" El calificador en nuestra declaración de manifiesto.

Si no usamos el administrador de dispositivos complementario, implementaremos nuestro propio escaneo y emparejamiento para todos los niveles de API. Sin embargo, podemos cambiar los permisos de API 31 y superiores. De esta forma, solo necesitamos permisos de ubicación hasta API 30.

Algunas personas pueden argumentar que el segundo método requiere menos trabajo. Sin embargo, refutaré esto, porque creo que el administrador de dispositivos complementario será más poderoso. La mayoría de nuestros usuarios tenderán a utilizar una versión superior de Android. Brindaremos una mejor calidad de servicio a los usuarios que utilizan equipos más nuevos. Además, solo necesitamos explicar los permisos de ubicación a los usuarios en dispositivos anteriores a API 26. El administrador de dispositivos complementarios no requiere que nuestra aplicación tenga este permiso.

En conclusión

El escaneo y el emparejamiento de Bluetooth no son fáciles de conseguir. Tener que considerar diferentes niveles de API, esto es algo complicado. Espero que este artículo pueda ayudar a quienes tienen que diseñar dichos componentes. La decisión final principal es si utilizar su propia implementación para todos los niveles de API o utilizar el administrador de dispositivos complementario cuando sea posible.

No hay código fuente adjunto a este artículo.

Copyright © 2021 Estilo de Android. reservados todos los derechos.

LEER  Cómo instalar Flutter en Windows (paso a paso) | Autor Sai Kumar Gandhi | Octubre 2021

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba