title: Pass the Bluetooth connection between Activities in Android Studio
body: <p>I found a very simple example for Bluetooth connection with Arduino here.
  <a href="http://www.instructables.com/id/Android-Bluetooth-Control-LED-Part-2/" rel="nofollow">http://www.instructables.com/id/Android-Bluetooth-Control-LED-Part-2/</a>
  Download full project: 
  <a href="http://www.instructables.com/id/Android-Bluetooth-Control-LED-Part-2/step9/Download/" rel="nofollow">http://www.instructables.com/id/Android-Bluetooth-Control-LED-Part-2/step9/Download/</a>
  Many thanks for the Author Deyson !
  It hase two Acitvities:
      1) DeviceList.java
      This showing the paired devices and You can select the desired one:</p>
  
  <pre><code>package com.led.led;
  import android.content.Intent;
  import android.support.v7.app.ActionBarActivity;
  import android.os.Bundle;
  import android.view.Menu;
  import android.view.MenuItem;
  import android.view.View;
  import android.widget.AdapterView;
  import android.widget.ArrayAdapter;
  import android.widget.Button;
  import android.widget.ListView;
  import android.bluetooth.BluetoothAdapter;
  import android.bluetooth.BluetoothDevice;
  import android.widget.TextView;
  import android.widget.Toast;
  
  import java.util.ArrayList;
  import java.util.Set;
  
  
  public class DeviceList extends ActionBarActivity
  {
  //widgets
  Button btnPaired;
  ListView devicelist;
  //Bluetooth
  private BluetoothAdapter myBluetooth = null;
  private Set&lt;BluetoothDevice&gt; pairedDevices;
  public static String EXTRA_ADDRESS = "device_address";
  
  @Override
  protected void onCreate(Bundle savedInstanceState)
  {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_device_list);
  
      //Calling widgets
      btnPaired = (Button)findViewById(R.id.button);
      devicelist = (ListView)findViewById(R.id.listView);
  
      //if the device has bluetooth
      myBluetooth = BluetoothAdapter.getDefaultAdapter();
  
      if(myBluetooth == null)
      {
          //Show a mensag. that the device has no bluetooth adapter
          Toast.makeText(getApplicationContext(), "Bluetooth Device Not Available", Toast.LENGTH_LONG).show();
  
          //finish apk
          finish();
      }
      else if(!myBluetooth.isEnabled())
      {
              //Ask to the user turn the bluetooth on
              Intent turnBTon = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
              startActivityForResult(turnBTon,1);
      }
  
      btnPaired.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v)
          {
              pairedDevicesList();
          }
      });
  
  }
  
  private void pairedDevicesList()
  {
      pairedDevices = myBluetooth.getBondedDevices();
      ArrayList list = new ArrayList();
  
      if (pairedDevices.size()&gt;0)
      {
          for(BluetoothDevice bt : pairedDevices)
          {
              list.add(bt.getName() + "\n" + bt.getAddress()); //Get the device's name and the address
          }
      }
      else
      {
          Toast.makeText(getApplicationContext(), "No Paired Bluetooth Devices Found.", Toast.LENGTH_LONG).show();
      }
  
      final ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1, list);
      devicelist.setAdapter(adapter);
      devicelist.setOnItemClickListener(myListClickListener); //Method called when the device from the list is clicked
  
  }
  
  private AdapterView.OnItemClickListener myListClickListener = new AdapterView.OnItemClickListener()
  {
      public void onItemClick (AdapterView&lt;?&gt; av, View v, int arg2, long arg3)
      {
          // Get the device MAC address, the last 17 chars in the View
          String info = ((TextView) v).getText().toString();
          String address = info.substring(info.length() - 17);
  
          // Make an intent to start next activity.
          Intent i = new Intent(DeviceList.this, ledControl.class);
  
          //Change the activity.
          i.putExtra(EXTRA_ADDRESS, address); //this will be received at ledControl (class) Activity
          startActivity(i);
      }
  };
  
  
  @Override
  public boolean onCreateOptionsMenu(Menu menu)
  {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.menu_device_list, menu);
      return true;
  }
  
  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
      // Handle action bar item clicks here. The action bar will
      // automatically handle clicks on the Home/Up button, so long
      // as you specify a parent activity in AndroidManifest.xml.
      int id = item.getItemId();
  
      //noinspection SimplifiableIfStatement
      if (id == R.id.action_settings) {
          return true;
      }
  
      return super.onOptionsItemSelected(item);
     }
  }
  </code></pre>
  
  <p>2) ledControl.java This is having the buttons and commuincation:</p>
  
  <pre><code>package com.led.led;
  
  import android.support.v7.app.ActionBarActivity;
  import android.os.Bundle;
  import android.view.Menu;
  import android.view.MenuItem;
  
  import android.bluetooth.BluetoothSocket;
  import android.content.Intent;
  import android.view.View;
  import android.widget.Button;
  import android.widget.SeekBar;
  import android.widget.TextView;
  import android.widget.Toast;
  import android.app.ProgressDialog;
  import android.bluetooth.BluetoothAdapter;
  import android.bluetooth.BluetoothDevice;
  import android.os.AsyncTask;
  
  import java.io.IOException;
  import java.util.UUID;
  
  
  public class ledControl extends ActionBarActivity {
  
  Button btnOn, btnOff, btnDis;
  SeekBar brightness;
  TextView lumn;
  String address = null;
  private ProgressDialog progress;
  BluetoothAdapter myBluetooth = null;
  BluetoothSocket btSocket = null;
  private boolean isBtConnected = false;
  //SPP UUID. Look for it
  static final UUID myUUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
  
  @Override
  protected void onCreate(Bundle savedInstanceState)
  {
      super.onCreate(savedInstanceState);
  
      Intent newint = getIntent();
      address = newint.getStringExtra(DeviceList.EXTRA_ADDRESS); //receive the address of the bluetooth device
  
      //view of the ledControl
      setContentView(R.layout.activity_led_control);
  
      //call the widgtes
      btnOn = (Button)findViewById(R.id.button2);
      btnOff = (Button)findViewById(R.id.button3);
      btnDis = (Button)findViewById(R.id.button4);
      brightness = (SeekBar)findViewById(R.id.seekBar);
      lumn = (TextView)findViewById(R.id.lumn);
  
      new ConnectBT().execute(); //Call the class to connect
  
      //commands to be sent to bluetooth
      btnOn.setOnClickListener(new View.OnClickListener()
      {
          @Override
          public void onClick(View v)
          {
              turnOnLed();      //method to turn on
          }
      });
  
      btnOff.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v)
          {
              turnOffLed();   //method to turn off
          }
      });
  
      btnDis.setOnClickListener(new View.OnClickListener()
      {
          @Override
          public void onClick(View v)
          {
              Disconnect(); //close connection
          }
      });
  
      brightness.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
          @Override
          public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
              if (fromUser==true)
              {
                  lumn.setText(String.valueOf(progress));
                  try
                  {
                      btSocket.getOutputStream().write(String.valueOf(progress).getBytes());
                  }
                  catch (IOException e)
                  {
  
                  }
              }
          }
  
          @Override
          public void onStartTrackingTouch(SeekBar seekBar) {
  
          }
  
          @Override
          public void onStopTrackingTouch(SeekBar seekBar) {
  
          }
      });
  }
  
  private void Disconnect()
  {
      if (btSocket!=null) //If the btSocket is busy
      {
          try
          {
              btSocket.close(); //close connection
          }
          catch (IOException e)
          { msg("Error");}
      }
      finish(); //return to the first layout
  
  }
  
  private void turnOffLed()
  {
      if (btSocket!=null)
      {
          try
          {
              btSocket.getOutputStream().write("TF".toString().getBytes());
          }
          catch (IOException e)
          {
              msg("Error");
          }
      }
  }
  
  private void turnOnLed()
  {
      if (btSocket!=null)
      {
          try
          {
              btSocket.getOutputStream().write("TO".toString().getBytes());
          }
          catch (IOException e)
          {
              msg("Error");
          }
      }
  }
  
  // fast way to call Toast
  private void msg(String s)
  {
      Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG).show();
  }
  
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.menu_led_control, menu);
      return true;
  }
  
  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
      // Handle action bar item clicks here. The action bar will
      // automatically handle clicks on the Home/Up button, so long
      // as you specify a parent activity in AndroidManifest.xml.
      int id = item.getItemId();
  
      //noinspection SimplifiableIfStatement
      if (id == R.id.action_settings) {
          return true;
      }
  
      return super.onOptionsItemSelected(item);
  }
  
  private class ConnectBT extends AsyncTask&lt;Void, Void, Void&gt;  // UI thread
  {
      private boolean ConnectSuccess = true; //if it's here, it's almost connected
  
      @Override
      protected void onPreExecute()
      {
          progress = ProgressDialog.show(ledControl.this, "Connecting...", "Please wait!!!");  //show a progress dialog
      }
  
      @Override
      protected Void doInBackground(Void... devices) //while the progress dialog is shown, the connection is done in background
      {
          try
          {
              if (btSocket == null || !isBtConnected)
              {
               myBluetooth = BluetoothAdapter.getDefaultAdapter();//get the mobile bluetooth device
               BluetoothDevice dispositivo = myBluetooth.getRemoteDevice(address);//connects to the device's address and checks if it's available
               btSocket = dispositivo.createInsecureRfcommSocketToServiceRecord(myUUID);//create a RFCOMM (SPP) connection
               BluetoothAdapter.getDefaultAdapter().cancelDiscovery();
               btSocket.connect();//start connection
              }
          }
          catch (IOException e)
          {
              ConnectSuccess = false;//if the try failed, you can check the exception here
          }
          return null;
      }
      @Override
      protected void onPostExecute(Void result) //after the doInBackground, it checks if everything went fine
      {
          super.onPostExecute(result);
  
          if (!ConnectSuccess)
          {
              msg("Connection Failed. Is it a SPP Bluetooth? Try again.");
              finish();
          }
          else
          {
              msg("Connected.");
              isBtConnected = true;
          }
          progress.dismiss();
      }
    }
  }
  </code></pre>
  
  <p>So I put one more button in he ledControl.java to open the Third Page, called Programing:</p>
  
  <pre><code>btnProgram.setOnClickListener(new View.OnClickListener()  //Open programing page
  {
     @Override
     public void onClick(View v)
     {                
       Intent i = new Intent(getApplicationContext(), Programing.class);
       startActivity(i);
     }
  });
  </code></pre>
  
  <p>The problem is the Third page not "remembering" on the bluetooth connection, so I can not send any information. I know some posts are here in the same topic as well. I tried many options, but without success.
  If somebody can propose a simple code to keep alive the BT connection between Activities, it will be very benefitial for the beginners like me, 
  So how is possible to PASS THE BT CONNECTION ON A SIMPEL WAY ?
  I kinldy asking You, please put You proposal in the above codes.
  Thank You for Your HELP in advance.</p>