Sunteți pe pagina 1din 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();
}
}

S-ar putea să vă placă și