Autore Topic: Connessione tra Android e Arduino tramite bluetooth  (Letto 570 volte)

Offline Michele_DArienzo

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsun galaxy s7 edge // Android 7.1
  • Sistema operativo:
    Windows 10
Connessione tra Android e Arduino tramite bluetooth
« il: 15 Maggio 2017, 17:21:47 CEST »
0
Salve a tutti, sto cercando di collegare il mio smartphone android ad arduino tramite bluetooth e sto avendo non pochi problemi con l'app.
Codice (Java): [Seleziona]
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.content.Context;
import android.os.ParcelUuid;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import android.widget.ToggleButton;

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




public class Controller extends AppCompatActivity {
    private OutputStream outputStream;
    private InputStream inStream;
    public UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");



    BluetoothAdapter mBluetoothAdapter=null;
    BluetoothSocket mmSocket=null;
    BluetoothDevice mmDevice=null;
    OutputStream outStream;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_controller);
        Button Attiva = (Button) findViewById(R.id.Attiva);
         Attiva.setOnClickListener(new View.OnClickListener(){
            public void onClick(View view){

                    mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
                if (mBluetoothAdapter == null) {
                    // IL BLUETOOTH NON E' SUPPORTATO
                    Toast.makeText(Controller.this, "BlueTooth non supportato", Toast.LENGTH_LONG).show();

                }

                    else{
                if (!mBluetoothAdapter.isEnabled())//controlla che sia abilitato il devices
                {
                    //  NON E' ABILITATO IL BLUETOOTH
                    Toast.makeText(Controller.this, "BlueTooth non abilitato", Toast.LENGTH_LONG).show();

                }
                else{
                    //  IL BLUETOOTH E' ABILITATO
                    mmDevice=mBluetoothAdapter.getRemoteDevice("20:16:12:15:81:95".getBytes());//MAC address del bluetooth di arduino
                    try{
                        mmSocket=mmDevice.createRfcommSocketToServiceRecord(uuid);
                    }
                    catch (IOException e){

                    }
                    try{
                        // CONNETTE IL DISPOSITIVO TRAMITE IL SOCKET mmSocket
                        mmSocket.connect();
                        outStream = mmSocket.getOutputStream();
                        Toast.makeText(Controller.this, "ON",  Toast.LENGTH_SHORT).show();//bluetooth è connesso
                    }
                    catch (IOException closeException){

                        try{
                            //TENTA DI CHIUDERE IL SOCKET
                            mmSocket.close();
                        }
                        catch (IOException ceXC){
                        }
                        Toast.makeText(Controller.this, "connessione non riuscita",  Toast.LENGTH_SHORT).show();
                    }
                }   //CHIUDE l'else di isEnabled
            }  //CHIUDE l'else di mBluetoothAdapter == null
          // CHIUDE if (tgb.isChecked())

            try{
                //TENTA DI CHIUDERE IL SOCKET
                outStream.close();
                mmSocket.close();
            }
            catch (IOException ceXC){}
        }

    } // CHIUDE public void OnClick(View view)

);

        Button Avanti = (Button) findViewById(R.id.FWD);
        Button Indietro = (Button) findViewById(R.id.BKW);
        Button Sinistra = (Button) findViewById(R.id.SX);
        Button Destra = (Button) findViewById(R.id.DX);
        Button Stop = (Button) findViewById(R.id.STOP);
        Avanti.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                sendMessageBluetooth("f");
            }});
        Indietro.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                sendMessageBluetooth("b");
            }});
        Destra.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                sendMessageBluetooth("r");
            }});
        Sinistra.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                sendMessageBluetooth("l");
            }});
        Stop.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                sendMessageBluetooth("s");
            }});
    }

    private void sendMessageBluetooth(String message) {
        if (outStream == null)
        {
            return;
        }
        byte[] msgBuffer = message.getBytes();
        try
        {
            outStream.write(msgBuffer);
        }
        catch (IOException e)
        {
            Toast.makeText(Controller.this, "Messaggio non Inviato", Toast.LENGTH_SHORT).show();
        }
    }
}
Il problema è che ogni volta che premo il bottone "Attiva" l'app si chiude inspiegabilmente anche se android studio non segnala alcun errore, il che lo rende molto frustrante.
Sapreste dirmi qual'è il problema?