Paso 6: ¿Cómo funciona?
El protocolo es más que simple comunicación inalámbrica, también incluye sincronización y como comunicación USB alguna aplicación protocolo de identificación. El Bluetooth tiene un UUID para cada protocolo, algunos conocido y algunos hasta implementar. Usé el Serial por Bluetooth para simplificar por supuesto en lugar de implementar una nueva marca. A continuación, en Bluetooth como en USB es la noción de Host y el cliente. El anfitrión está esperando llamadas mientras clientes generan. Me llevó algún tiempo entender esto y colocó el teléfono en modo de host y el accesorio en modo cliente. El accesorio que debe ser alimentado por una fuente de alimentación tratará de conectar todo el tiempo, y el teléfono que obviamente es alimentado por batería hará la menos energía consume la tarea de la espera de una conexión Bluetooth.
Siguiente, Android...
Bien si eres un programador de Arduino esto puede parecer muy extraño a usted, pero los programas en Android no son monolíticos como en Arduino. Una aplicación es una colección de fragmentos de código que es ejecutada en ciertas condiciones o casos. Por supuesto el idioma a usar es Java, por lo también sería diferente. Permítanme darles un ejemplo: tener la información sobre el estado de la batería (cuánto le queda, si es completo o no etc.) hay ninguna función de API y lo encuesta. En realidad es registrar un función o método que escribe que se llama por el sistema una vez algo sobre los cambios de batería. Lo mismo de llamadas perdidas, no obtener dicha información de una consulta a una API... se registra una función de devolución de llamada con el sistema para que una vez que hay un cambio en la base de datos de registro de llamada en el sistema, también llamará su función social. Cuando tu aplicación Android quiere examinar estos registros de llamadas o SMS o escuchar transmisiones de batería, usted necesita agregar permisos a la aplicación por lo que puede hacer eso. De lo contrario, el sistema omitirá silenciosamente su solicitud para ser notificado o ser un oyente de estos mensaje.
A continuación, quería que el accesorio de conexión automática una vez que el teléfono está en gama, a lo que usted necesita tener algo de trabajo en el fondo como yo no espero que la aplicación sea la aplicación activa todo el tiempo. Para ello no basta con escribir una actividad Android, pero es necesario tener un servicio de Android también. El servicio es ejecutado por la actividad Android como empieza. Pero para mostrar cosas en la pantalla del teléfono... tienes una actividad y no un servicio. OK, así que servicio necesita para hablar de lo que encuentra la actividad. Hacer que envía información en una publicación-mecanismo para que la actividad registrada antes de suscribirse. El servicio es también la pieza de código que se comunica por Bluetooth con el accesorio. Esto es importante porque no es prudente llamar bloqueo llamadas (como red o inalámbrico leer y escribe) de la actividad. Actividad debe estar plenamente preparado para interactuar con el usuario final.
Por último, quería tener el teléfono que controla la intensidad de la pantalla. Para hacer la actividad que es un componente de interfaz de usuario, tiene que decirle al servicio de lo que el usuario decidió la intensidad de ser. Otra cosa para... Pero ¿cómo sé que lo que hoy es la intensidad? Bien, por que tuve la respuesta de código de Arduino a consulta por el teléfono, el servicio de emitir esta consulta en la conexión y actualización de la actividad sobre el actual nivel de intensidad. ¿Suena complejo? No realmente pero ciertamente tedioso de aplicar.
Para obtener la información sobre la batería, yo registre un BroadcastReceiver y encuentra que se que llama cada 30 segundos.
Lo de las llamadas perdidas funciona perfecto, pero la información de SMS es algo complicada. Hay una notificación sobre nuevos SMS entrantes, pero ninguna notificación cuando el usuario Lee un SMS. Por lo tanto, estoy votación el registro de SMS cada vez que recibo la notificación de batería también. Eso significa que en entrante SMS la pantalla actualización inmediatamente para demostrar que es uno, pero una vez que leas el SMS tarda hasta 30 segundos de la pantalla para mostrar que hay ya no hay mensajes SMS no leídos. Para mí este es un compromiso aceptable y si le encuentro una mejor manera, la utilizo.
Por favor, desnudo en cuenta que este es realmente mi primer programa de Android. Hace ya bastante tiempo escribí cualquier código Java demasiado (más de una década). Nunca hice nada con el Bluetooth ya sea... Se inició el código de Android existente muestra código, principalmente el BluetoothChat ejemplo.