Creando tu propia aplicacion Java, Android+Bluetooth+Arduino

By | 16 Noviembre, 2015

En primer lugar, hay que saber que hay un archivo fundamental para que se ejecute cualquier aplicacion en Android, que se llama “AndroidManifest.xml“. Vale la aclaracion que Android es una plataforma que esta bajo licencias CC 2.5, por lo tanto compatibles con nuestros fines.

Para arduino, lo unico que tiene que hacer es leer y escribir un pin, asi que aca dejamos el sketch:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
boolean estado;
//Configuracion de la velocidad de puerto Serial y los pines que utilizaremos, en este caso el pin 12
void setup()
{
  Serial.begin(9600);
  pinMode(12, OUTPUT);
  digitalWrite(12, LOW);
  randomSeed(analogRead(0));
  estado = false;
}
//Para el loop le diremos que tarde 1000 milisegundos antes de volver a ejecutar el ciclo.
void loop()
{
    delay(1000);
//Enviamos el valor 40 al pin 12
    Serial.write(random(40));
    while(Serial.available() > 0)
//Cuando este disponible que lea:
    {
      Serial.read();
//Validamos si hubo un cambio de estado
      estado = !estado;
//Y lo mandamos por la pata 12
      digitalWrite(12, estado);
    }
}

Si desean interiorizarse mas acerca de el manejo del puerto serie: Puerto serie (en ingles)

Volviendo al tema de “AndroidManifest.xml“, es un archivo xml como lo dice su extension,  que contiene todas las configuraciones que tendra nuestra APP. Por ejemplo, si queremos crear nuestra aplicacion para controlar algo mediante bluetooth, lo que necesitariamos seria agregar las siguientes dos lineas:

1
2
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

Para leer mas sobre este archivo, ir al siguiente apartado: Android manifest

Ahora bien, el siguiente codigo para conectar manejar el bluetooth. La clase para manejar dispositivos bluetooth que vimos funcionar es la siquiente, sigan el link para mas informacion: bluetoothAdapter

package com.tecnologiaslibres.arduinobluetooth;
import java.io.IOException;
import java.util.ArrayList;
import java.util.UUID;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
public class BluetoothUtils {
private static final String UUID_CODE = 00001101-0000-1000-8000-00805F9B34FB;
private ArrayList<BluetoothDevice> devices;
private BluetoothAdapter adapter;
private BluetoothSocket socket;
public BluetoothUtils() {
devices = new ArrayList<BluetoothDevice>();
//Obtenemos el dispositivo bluetooth del terminal
adapter = BluetoothAdapter.getDefaultAdapter();
//Si no hay dispositivo terminamos
if (adapter == null)
return;
//Obtenemos todos los dispositivos bluetooth
//vinculados
for (BluetoothDevice d : adapter.getBondedDevices())
devices.add(d);
}
/**
* Devuelve el nombre de los dispositivos
* vinculados para poder seleccionarlo
* @return
*/
public String[] getNames() {
String names[] = new String[devices.size()];
for (int i = 0; i < devices.size(); i++)
names[i] = devices.get(i).getName();
return names;
}
/**
* Método para conectar a un dispositivo Bluetooth
* según su posición en la lista.
* @param index
* @return si ha conectado o no
*/
public boolean connect(int index) {
if (index < 0 || index >= devices.size())
return false;
try {
//Obtenemos el dispositivo según su posición
BluetoothDevice device = devices.get(index);
//Conectamos con el dispositivo
socket = device.createInsecureRfcommSocketToServiceRecord(UUID.fromString(UUID_CODE));
socket.connect();
return true;
} catch (IOException e) {
//Si ha ocurrido algún error devolvermos false
e.printStackTrace();
return false;
}
}
/**
* Método para desconectar
*/
public void disconnect() {
if (isConnected()) {
try {
socket.close();
} catch (IOException e) {
}
}
}
/**
* Método que nos indica si está o no coenctado
* el socket bluetooth
*/
public boolean isConnected() {
if (socket == null)
return false;
return socket.isConnected();
}
/**
* Método para enviar un dato mediante bluetooth
* @param dato
*/
public void send(int dato) {
//Si el socket está a null es que no hemos conectado
if (socket == null)
return;
try {
socket.getOutputStream().write(dato);
} catch (IOException e) {}
}
}

La idea de este post es que los que se inicien en el mundo java para crear aplicaciones con android tengan una idea de como comenzar a buscar, luego haremos un proyecto de este estilo y nos meteremos en el mundo java pero muy por arriba, el tiempo es tirano y todo no se puede abarcar.

Invitamos a que dejen comentarios!