package com.example.android.smartglass; import android.app.ProgressDialog; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothSocket; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.EditText; import android.widget.Toast; import java.io.IOException; import java.util.UUID; public class CustomProcess extends AppCompatActivity { 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(MainActivity.EXTRA_ADDRESS); //receive the address of the bluetooth device setContentView(R.layout.activity_custom_process); new ConnectBT().execute(); //Call the class to connect } 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 } // fast way to call Toast private void msg(String s) { Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG).show(); } public void sendMessage(View view) { if (btSocket!=null) { try { EditText editText = (EditText) findViewById(R.id.editText); String value = editText.getText().toString(); btSocket.getOutputStream().write(value.getBytes()); } catch (IOException e) { msg("Error"); } } } public void getRecipe(View view) { if (btSocket!=null) { try { btSocket.getOutputStream().write("Recipie for soup".toString().getBytes()); } catch (IOException e) { msg("Error"); } } } public void getMsg(View view) { if (btSocket!=null) { try { btSocket.getOutputStream().write("Debashis Das: Hi".toString().getBytes()); } catch (IOException e) { msg("Error"); } } } public void getLocation(View view) { if (btSocket!=null) { try { btSocket.getOutputStream().write("BPPIMT, VIP Road".toString().getBytes()); } catch (IOException e) { msg("Error"); } } } public void getHotels(View view) { if (btSocket!=null) { try { btSocket.getOutputStream().write("Dominos; Subway, CCD".toString().getBytes()); } catch (IOException e) { msg("Error"); } } } public void getCalls(View view) { if (btSocket!=null) { try { btSocket.getOutputStream().write("Gopal Calling ...".toString().getBytes()); } catch (IOException e) { msg("Error"); } } } public void getReadings(View view) { if (btSocket!=null) { try { btSocket.getOutputStream().write("13.3V".toString().getBytes()); } catch (IOException e) { msg("Error"); } } } private class ConnectBT extends AsyncTask<Void, Void, Void> // UI thread { private boolean ConnectSuccess = true; //if it's here, it's almost connected @Override protected void onPreExecute() { progress = ProgressDialog.show(CustomProcess.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(); } } }