0% found this document useful (0 votes)
116 views

Android Bluetooth To Arduino

This Android application code defines a class called Main that allows a user to control a Bluetooth device and view messages received from it. The class initializes Bluetooth, defines buttons to connect and toggle a device, and includes methods to check for Bluetooth support, connect to a device, write data to it, and listen for incoming data in a separate thread. When data is received, it is displayed in a text view.

Uploaded by

giankaunang
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
116 views

Android Bluetooth To Arduino

This Android application code defines a class called Main that allows a user to control a Bluetooth device and view messages received from it. The class initializes Bluetooth, defines buttons to connect and toggle a device, and includes methods to check for Bluetooth support, connect to a device, write data to it, and listen for incoming data in a separate thread. When data is received, it is displayed in a text view.

Uploaded by

giankaunang
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 4

package com.example.

myApp;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.UUID;

import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ToggleButton;

public class Main extends Activity implements OnClickListener {

Button Connect;
ToggleButton OnOff;
TextView Result;
private String dataToSend;

private static final String TAG = "Jon";
private BluetoothAdapter mBluetoothAdapter = null;
private BluetoothSocket btSocket = null;
private OutputStream outStream = null;
private static String address = "XX:XX:XX:XX:XX:XX";
private static final UUID MY_UUID = UUID
.fromString("00001101-0000-1000-8000-00805F9B34FB");
private InputStream inStream = null;
Handler handler = new Handler();
byte delimiter = 10;
boolean stopWorker = false;
int readBufferPosition = 0;
byte[] readBuffer = new byte[1024];

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Connect = (Button) findViewById(R.id.connect);
OnOff = (ToggleButton) findViewById(R.id.tgOnOff);
Result = (TextView) findViewById(R.id.msgJonduino);

Connect.setOnClickListener(this);
OnOff.setOnClickListener(this);

CheckBt();
BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(a
ddress);
Log.e("Jon", device.toString());

}

@Override
public void onClick(View control) {
switch (control.getId()) {
case R.id.connect:
Connect();
break;
case R.id.tgOnOff:
if (OnOff.isChecked()) {
dataToSend = "1";
writeData(dataToSend);
} else if (!OnOff.isChecked()) {
dataToSend = "0";
writeData(dataToSend);
}
break;
}
}

private void CheckBt() {
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

if (!mBluetoothAdapter.isEnabled()) {
Toast.makeText(getApplicationContext(), "Bluetooth D
isabled !",
Toast.LENGTH_SHORT).show();
}

if (mBluetoothAdapter == null) {
Toast.makeText(getApplicationContext(),
"Bluetooth null !", Toast.LENGTH_SHO
RT)
.show();
}
}

public void Connect() {
Log.d(TAG, address);
BluetoothDevice device = mBluetoothAdapter.getRemote
Device(address);
Log.d(TAG, "Connecting to ... " + device);
mBluetoothAdapter.cancelDiscovery();
try {
btSocket = device.createRfcommSocketToServic
eRecord(MY_UUID);
btSocket.connect();
Log.d(TAG, "Connection made.");
} catch (IOException e) {
try {
btSocket.close();
} catch (IOException e2) {
Log.d(TAG, "Unable to end the connec
tion");
}
Log.d(TAG, "Socket creation failed");
}

beginListenForData();
}

private void writeData(String data) {
try {
outStream = btSocket.getOutputStream();
} catch (IOException e) {
Log.d(TAG, "Bug BEFORE Sending stuff", e);
}

String message = data;
byte[] msgBuffer = message.getBytes();

try {
outStream.write(msgBuffer);
} catch (IOException e) {
Log.d(TAG, "Bug while sending stuff", e);
}
}

@Override
protected void onDestroy() {
super.onDestroy();

try {
btSocket.close();
} catch (IOException e) {
}
}

public void beginListenForData() {
try {
inStream = btSocket.getInputStream();
} catch (IOException e) {
}

Thread workerThread = new Thread(new Runnable()
{
public void run()
{
while(!Thread.currentThread().isInterrupted() && !sto
pWorker)
{
try
{
int bytesAvailable = inStream.available();

if(bytesAvailable > 0)
{
byte[] packetBytes = new byte[bytesAvail
able];
inStream.read(packetBytes);
for(int i=0;i<bytesAvailable;i++)
{
byte b = packetBytes[i];
if(b == delimiter)
{
byte[] encodedBytes = new byte[r
eadBufferPosition];
System.arraycopy(readBuffer, 0,
encodedBytes, 0, encodedBytes.length);
final String data = new String(e
ncodedBytes, "US-ASCII");
readBufferPosition = 0;
handler.post(new Runnable()
{
public void run()
{

if(Result.getText().
toString().equals("..")) {
Result.setTe
xt(data);
} else {
Result.appen
d("\n"+data);
}

/* You also can use
Result.setText(data); it won't display multilines
*/

}
});
}
else
{
readBuffer[readBufferPosition++]
= b;
}
}
}
}
catch (IOException ex)
{
stopWorker = true;
}
}
}
});

workerThread.start();
}
}

You might also like