# Android Bluetooth

**URL:** https://discourse.processing.org/t/android-bluetooth/27140
**Category:** Gallery
**Created:** [January 17, 2021, 11:33am UTC](https://discourse.processing.org/t/android-bluetooth/27140 "2021-01-17T11:33:17Z")
**Posts on this page:** 1
**Showing post:** 3

<div class="post-metadata">

### Author: ![noel](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/noel/32/213_2.png) [@noel](https://discourse.processing.org/u/noel)
#### Post date: [January 18, 2021, 9:34pm UTC](https://discourse.processing.org/t/android-bluetooth/27140/3 "2021-01-18T21:34:31Z")

</div>

On [request](https://discourse.processing.org/t/android-bluetooth-to-arduino-and-vice-versa/26578/135), another example code, displaying the analog read value of an Arduino equipped with a potentiometer and an HC-05 Bluetooth module.

> **Analog Read**
>
> - Arduino code
> 
> ```auto
> #include <SoftwareSerial.h>
> #include <Wire.h>
> 
> SoftwareSerial mySerial(11, 12); // RX, TX
> 
> int value = 0;
> int previous_value = 0;
> 
> void setup() {
> mySerial.begin(115200); // Set the baudrate equal to HC06 setting
> }
> 
> void loop() {
> for (int i = 0; i < 32; i++) value += analogRead(0);
> value /= 32;
> if( value != previous_value) mySerial.print(String(value) + '!');
> previous_value = value;
> delay(100);
> }
> 
> ```
> 
> - Processing code
> 
> ```auto
> import android.Manifest; 
> import android.content.pm.PackageManager; 
> import android.os.Build; 
> import android.os.Build.VERSION_CODES; 
> import processing.core.PConstants;
> import android.app.Activity; 
> import android.bluetooth.BluetoothAdapter;
> import android.bluetooth.BluetoothDevice;
> import android.bluetooth.BluetoothSocket;
> import android.content.Intent;
> import java.io.IOException;
> import java.io.InputStream;
> import java.io.OutputStream;
> import java.util.Set;
> import java.util.UUID;
> 
> BluetoothAdapter mBluetoothAdapter;
> BluetoothSocket mmSocket;
> BluetoothDevice mmDevice;
> OutputStream mmOutputStream;
> InputStream mmInputStream;
> Activity activity;
> Permission bt, afl;
> 
> Thread runThread;
> byte[] readBuffer;
> int buffer_index;
> int counter;
> boolean stop_thread, plotting = false, init = true;
> 
> String msg = " ";
> String device_name = "HC-05";
> String r_str = " ";
> String str_1, str_2, str_3;
> float px, py, x, y;
> int ts_1, ts_2, ts_3;
> 
> void setup() {
> fullScreen();
> orientation(LANDSCAPE);
> bt = new Permission(this, "BLUETOOTH");
> afl = new Permission(this, "ACCESS_FINE_LOCATION");
> textAlign(CENTER, CENTER);
> textSize(12);
> str_1 = "Click to connect.";
> str_2 = "8888";
> str_3 = "Analog reading value";
> textSize(12); // Start value to create a "textwidth factor",
> // Making it proportional for other screen resolutions
> float twf_1 = width/textWidth(str_1);
> float twf_2 = width/textWidth(str_2);
> float twf_3 = width/textWidth(str_3);
> int f_1 = 4; // Empericaly found 
> int f_2 = 11;
> int f_3 = 8;
> ts_1 = int(f_1*twf_1);
> ts_2 = int(f_2*twf_2);
> ts_3 = int(f_3*twf_3);
> fill(255);
> activity = this.getActivity();
> }
> 
> void draw() {
> if (init) {
> background(150);
> textSize(ts_1); 
> text(str_1, width/2, height/2);
> }
> }
> 
> void mousePressed () {
> if (init) {
> try {
> init = false;
> findBluetooth();
> connect();
> plotting = true;
> background(0);
> fill(255, 255, 0);
> textSize(ts_3); 
> text(str_3, width/2, height/8);
> textSize(ts_2);
> } 
> catch (IOException ex) {
> println(ex);
> }
> }
> }
> 
> void plot(String r_str) {
> if (r_str.length() < 1 || r_str == null) r_str = "0";
> if (plotting) {
> fill(0);
> rect(0, height/3, width, 2*height/3);
> fill(255, 255, 0);
> text(r_str, width/2, 2*height/3);
> }
> }
> 
> void findBluetooth() {
> mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
> if (mBluetoothAdapter == null) {
> println("No bluetooth adapter available");
> }
> if (!mBluetoothAdapter.isEnabled()) {
> Intent enableBluetooth = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
> activity.startActivityForResult(enableBluetooth, 0);
> }
> Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
> if (pairedDevices.size() > 0) {
> print("Paired devices MAC Adress:");
> printArray(pairedDevices);
> for (BluetoothDevice device : pairedDevices) {
> print("Paired devices by name:");
> println(device.getName());
> if (device.getName().equals(device_name)) {
> mmDevice = device;
> println("Bluetooth device name found");
> break;
> }
> }
> }
> }
> 
> void connect() throws IOException {
> UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); //Standard SerialPortService ID
> mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid);        
> mmSocket.connect();
> mmOutputStream = mmSocket.getOutputStream();
> mmInputStream = mmSocket.getInputStream();
> println("Bluetooth connected");
> final byte delimiter = 33; //This is the ASCII code for a ! character
> stop_thread = false;
> buffer_index = 0;
> readBuffer = new byte[1024];
> runThread = new Thread(new Runnable() {
> public void run() {                
> while (!Thread.currentThread().isInterrupted() && !stop_thread) {
> try {
> int bytesAvailable = mmInputStream.available();                        
> if (bytesAvailable > 0) {
> byte[] packetBytes = new byte[bytesAvailable];
> mmInputStream.read(packetBytes);
> for (int i = 0; i < bytesAvailable; i++) {
> byte b = packetBytes[i];
> if (b == delimiter) {
> byte[] encodedBytes = new byte[buffer_index];
> System.arraycopy(readBuffer, 0, encodedBytes, 0, encodedBytes.length);
> final String data = new String(encodedBytes, "US-ASCII");
> plot(data);
> buffer_index = 0;
> } else {
> readBuffer[buffer_index++] = b;
> }
> }
> }
> } 
> catch (IOException ex) 
> {
> stop_thread = true;
> }
> }
> }
> }
> );
> runThread.start();
> }
> 
> void closeBluetooth() throws IOException {
> stop_thread = true;
> mmOutputStream.close();
> mmInputStream.close();
> mmSocket.close();
> println("Bluetooth stopped");
> }
> 
> class Permission {
> PApplet parent;
> boolean requestedPortraitImage = false;
> 
> Permission(PApplet pParent, String permissionName) {
> parent = pParent;
> parent.requestPermission("android.permission."+permissionName, "onPermissionResult", this);
> }
> 
> void onPermissionResult(boolean granted) {
> if (granted) println("User did grant permission.");
> else println("User did NOT grant permission.");
> }
> }
> 
> void onPause() {
> try {
> closeBluetooth();
> } 
> catch (Exception ex) {
> }
> super.onPause();
> }
> 
> void onStop () {
> try {
> closeBluetooth();
> } 
> catch (Exception ex) {
> }
> super.onStop();
> }
> 
> void onRestart() {
> try {
> findBluetooth();
> connect();
> } 
> catch (IOException ex) {
> println(ex);
> }
> }
> 
> ```

 ![1023](https://canada1.discourse-cdn.com/flex036/uploads/processingfoundation1/original/2X/3/3e34bb7f77ab1eb49e750ba697d474af1552d9a4.png)

---

_[View the full topic](https://discourse.processing.org/t/android-bluetooth/27140)._
