Conexão bluetooth

Boa tarde galera!

Estou tentando fazer uma conexão no android com o bletooth mas não estou conseguindo depois de tudo que li creio que o problema seja no UUID, mas não consigo resolve-lo.
Por isso peço ajuda de vocês!

Obrigado.

[code]package com.example.eugenio.chuveiroeconomico;

import android.annotation.TargetApi;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.ParcelUuid;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import com.example.eugenio.chuveiroeconomico.util.SystemUiHider;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.reflect.Method;
import java.util.UUID;

/**

  • An example full-screen activity that shows and hides the system UI (i.e.

  • status bar and navigation/system bar) with user interaction.

  • @see SystemUiHider
    */
    public class ChuveiroEconomico extends Activity {

    private static final boolean AUTO_HIDE = true;
    private static final int AUTO_HIDE_DELAY_MILLIS = 3000;
    private static final boolean TOGGLE_ON_CLICK = true;
    private static final int HIDER_FLAGS = SystemUiHider.FLAG_HIDE_NAVIGATION;
    private SystemUiHider mSystemUiHider;

    private static final String TAG = “bluetooth1”;

    Button btnOn, btnOff;
    Handler h;
    TextView tvRecebido;

    final int RECIEVE_MESSAGE = 1; // Status for Handler
    private BluetoothAdapter btAdapter = null;
    private BluetoothSocket btSocket = null;
    private StringBuilder sb = new StringBuilder();
    private ConnectedThread mConnectedThread;

    // SPP UUID service
    private static final UUID MY_UUID = UUID.fromString(“00001101-0000-1000-8000-00805F9B34FB”);

    // MAC-address of Bluetooth module (you must edit this line)
    private static String address = “20:14:05:15:32:00”;

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

     final View controlsView = findViewById(R.id.fullscreen_content_controls);
     final View contentView = findViewById(R.id.fullscreen_content);
    
     // Set up an instance of SystemUiHider to control the system UI for
     // this activity.
     mSystemUiHider = SystemUiHider.getInstance(this, contentView, HIDER_FLAGS);
     mSystemUiHider.setup();
     mSystemUiHider
             .setOnVisibilityChangeListener(new SystemUiHider.OnVisibilityChangeListener() {
                 // Cached values.
                 int mControlsHeight;
                 int mShortAnimTime;
    
                 @Override
                 @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
                 public void onVisibilityChange(boolean visible) {
                     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
                         // If the ViewPropertyAnimator API is available
                         // (Honeycomb MR2 and later), use it to animate the
                         // in-layout UI controls at the bottom of the
                         // screen.
                         if (mControlsHeight == 0) {
                             mControlsHeight = controlsView.getHeight();
                         }
                         if (mShortAnimTime == 0) {
                             mShortAnimTime = getResources().getInteger(
                                     android.R.integer.config_shortAnimTime);
                         }
                         controlsView.animate()
                                 .translationY(visible ? 0 : mControlsHeight)
                                 .setDuration(mShortAnimTime);
                     } else {
                         // If the ViewPropertyAnimator APIs aren't
                         // available, simply show or hide the in-layout UI
                         // controls.
                         controlsView.setVisibility(visible ? View.VISIBLE : View.GONE);
                     }
    
                     if (visible && AUTO_HIDE) {
                         // Schedule a hide().
                         delayedHide(AUTO_HIDE_DELAY_MILLIS);
                     }
                 }
             });
    
     // Set up the user interaction to manually show or hide the system UI.
     contentView.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View view) {
             if (TOGGLE_ON_CLICK) {
                 mSystemUiHider.toggle();
             } else {
                 mSystemUiHider.show();
             }
         }
     });
    
     // Upon interacting with UI controls, delay any scheduled hide()
     // operations to prevent the jarring behavior of controls going away
     // while interacting with the UI.
     findViewById(R.id.dummy_button).setOnTouchListener(mDelayHideTouchListener);
     tvRecebido = (TextView) findViewById(R.id.textoRecebido);      // for display the received data from the Arduino
    
     h = new Handler() {
         public void handleMessage(android.os.Message msg) {
             switch (msg.what) {
                 case RECIEVE_MESSAGE:                                                   // if receive massage
                     byte[] readBuf = (byte[]) msg.obj;
                     String strIncom = new String(readBuf, 0, msg.arg1);                 // create string from bytes array
                     sb.append(strIncom);                                                // append string
                     int endOfLineIndex = sb.indexOf("\r\n");                            // determine the end-of-line
                     if (endOfLineIndex > 0) {                                            // if end-of-line,
                         String sbprint = sb.substring(0, endOfLineIndex);               // extract string
                         sb.delete(0, sb.length());                                      // and clear
                         tvRecebido.setText("Data from Arduino: " + sbprint);            // update TextView
                     }
                     //Log.d(TAG, "...String:"+ sb.toString() +  "Byte:" + msg.arg1 + "...");
                     break;
             }
         }
    
         ;
     };
     btAdapter = BluetoothAdapter.getDefaultAdapter();       // get Bluetooth adapter
     checkBTState();
    

    }

    private BluetoothSocket createBluetoothSocket(BluetoothDevice device) throws IOException {
    if (Build.VERSION.SDK_INT >= 10) {
    ParcelUuid list[] = device.getUuids();
    try {
    final Method m = device.getClass().getMethod(“createInsecureRfcommSocketToServiceRecord”, new Class[]{UUID.class});
    device.getClass().getMethod()
    return (BluetoothSocket) m.invoke(device, list[0]);
    } catch (Exception e) {
    Log.e(TAG, “Could not create Insecure RFComm Connection”, e);
    }
    }
    return device.createRfcommSocketToServiceRecord(MY_UUID);
    }

    private void checkBTState() {
    // Check for Bluetooth support and then check to make sure it is turned on
    // Emulator doesn’t support Bluetooth and will return null
    if (btAdapter == null) {
    errorExit(“Fatal Error”, “Bluetooth not support”);
    } else {
    if (btAdapter.isEnabled()) {
    Log.d(TAG, “…Bluetooth ON…”);
    } else {
    //Prompt user to turn on Bluetooth
    Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
    startActivityForResult(enableBtIntent, 1);
    }
    }
    }

    private void errorExit(String title, String message) {
    Toast.makeText(getBaseContext(), title + " - " + message, Toast.LENGTH_LONG).show();
    finish();
    }

    private class ConnectedThread extends Thread {
    private final InputStream mmInStream;
    private final OutputStream mmOutStream;

     public ConnectedThread(BluetoothSocket socket) {
         InputStream tmpIn = null;
         OutputStream tmpOut = null;
    
         // Get the input and output streams, using temp objects because
         // member streams are final
         try {
             tmpIn = socket.getInputStream();
             tmpOut = socket.getOutputStream();
         } catch (IOException e) {
         }
    
         mmInStream = tmpIn;
         mmOutStream = tmpOut;
     }
    
     public void run() {
         byte[] buffer = new byte[256];  // buffer store for the stream
         int bytes; // bytes returned from read()
    
         // Keep listening to the InputStream until an exception occurs
         while (true) {
             try {
                 // Read from the InputStream
                 bytes = mmInStream.read(buffer);        // Get number of bytes and message in "buffer"
                 h.obtainMessage(RECIEVE_MESSAGE, bytes, -1, buffer).sendToTarget();     // Send to message queue Handler
             } catch (IOException e) {
                 break;
             }
         }
     }
    
     /* Call this from the main activity to send data to the remote device */
     public void write(String message) {
         Log.d(TAG, "...Data to send: " + message + "...");
         byte[] msgBuffer = message.getBytes();
         try {
             mmOutStream.write(msgBuffer);
         } catch (IOException e) {
             Log.d(TAG, "...Error data send: " + e.getMessage() + "...");
         }
     }
    

    }

    @Override
    protected void onPause() {
    super.onPause();
    Log.d(TAG, “…In onPause()…”);

     try {
         btSocket.close();
     } catch (IOException e2) {
         errorExit("Fatal Error", "In onPause() and failed to close socket." + e2.getMessage() + ".");
     }
    

    }

    @Override
    protected void onResume() {
    super.onResume();
    Log.d(TAG, “…onResume - try connect…”);

     // Set up a pointer to the remote node using it's address.
     BluetoothDevice device = btAdapter.getRemoteDevice(address);
    
     // Two things are needed to make a connection:
     //   A MAC address, which we got above.
     //   A Service ID or UUID.  In this case we are using the
     //     UUID for SPP.
    
     try {
         btSocket = createBluetoothSocket(device);
     } catch (IOException e) {
         errorExit("Fatal Error", "In onResume() and socket create failed: " + e.getMessage() + ".");
     }
    
     // Discovery is resource intensive.  Make sure it isn't going on
     // when you attempt to connect and pass your message.
     btAdapter.cancelDiscovery();
    
     // Establish the connection.  This will block until it connects.
     Log.d(TAG, "...Connecting...");
     try {
         btSocket.connect();
         Log.d(TAG, "....Connection ok...");
     } catch (IOException e) {
         try {
             btSocket.close();
         } catch (IOException e2) {
             errorExit("Fatal Error", "In onResume() and unable to close socket during connection failure" + e2.getMessage() + ".");
         }
     }
    
     // Create a data stream so we can talk to server.
     Log.d(TAG, "...Create Socket...");
    
     mConnectedThread = new ConnectedThread(btSocket);
     mConnectedThread.start();
    

    }

    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);

     // Trigger the initial hide() shortly after the activity has been
     // created, to briefly hint to the user that UI controls
     // are available.
     delayedHide(100);
    

    }

    /**

    • Touch listener to use for in-layout UI controls to delay hiding the
    • system UI. This is to prevent the jarring behavior of controls going away
    • while interacting with activity UI.
      */
      View.OnTouchListener mDelayHideTouchListener = new View.OnTouchListener() {
      @Override
      public boolean onTouch(View view, MotionEvent motionEvent) {
      if (AUTO_HIDE) {
      delayedHide(AUTO_HIDE_DELAY_MILLIS);
      }
      return false;
      }
      };

    Handler mHideHandler = new Handler();
    Runnable mHideRunnable = new Runnable() {
    @Override
    public void run() {
    mSystemUiHider.hide();
    }
    };

    /**

    • Schedules a call to hide() in [delay] milliseconds, canceling any
    • previously scheduled calls.
      */
      private void delayedHide(int delayMillis) {
      mHideHandler.removeCallbacks(mHideRunnable);
      mHideHandler.postDelayed(mHideRunnable, delayMillis);
      }
      }
      [/code]

Onde eu creio que seja o erro.

private BluetoothSocket createBluetoothSocket(BluetoothDevice device) throws IOException { if (Build.VERSION.SDK_INT >= 10) { try { final Method m = device.getClass().getMethod("createInsecureRfcommSocketToServiceRecord", new Class[]{UUID.class}); return (BluetoothSocket) m.invoke(device, MY_UUID); } catch (Exception e) { Log.e(TAG, "Could not create Insecure RFComm Connection", e); } } return device.createRfcommSocketToServiceRecord(MY_UUID); }

06-17 13:11:34.355 7460-7460/com.example.eugenio.chuveiroeconomico D/bluetooth1﹕ ...Connecting... 06-17 13:11:34.355 7460-7460/com.example.eugenio.chuveiroeconomico D/BluetoothUtils﹕ isSocketAllowedBySecurityPolicy start : device null 06-17 13:11:34.355 7460-7460/com.example.eugenio.chuveiroeconomico W/BluetoothAdapter﹕ getBluetoothService() called with no BluetoothManagerCallback 06-17 13:11:34.355 7460-7460/com.example.eugenio.chuveiroeconomico D/BluetoothSocket﹕ connect(), SocketState: INIT, mPfd: {ParcelFileDescriptor: FileDescriptor[50]} 06-17 13:11:41.995 7460-7460/com.example.eugenio.chuveiroeconomico D/bluetooth1﹕ ...Create Socket... 06-17 13:11:41.995 7460-7460/com.example.eugenio.chuveiroeconomico D/BluetoothUtils﹕ isSocketAllowedBySecurityPolicy start : device null 06-17 13:11:42.005 7460-7460/com.example.eugenio.chuveiroeconomico D/BluetoothUtils﹕ isSocketAllowedBySecurityPolicy start : device null