package org.twinone.rubiksolver.ui; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothSocket; import android.os.Bundle; import android.os.Handler; import android.os.ParcelUuid; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.widget.Toast; import org.twinone.rubiksolver.robot.RobotScheduler; import org.twinone.rubiksolver.robot.SlightlyMoreAdvancedMapper; import java.io.IOException; import java.util.UUID; public class MainActivity extends AppCompatActivity { public static final int SIZE = 3; private BluetoothAdapter mBluetoothAdapter; private RobotScheduler mRobotScheduler; private SlightlyMoreAdvancedMapper mMapper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getFragmentManager().beginTransaction().replace(android.R.id.content, new CameraFragment()).commit(); new Handler().post(new Runnable() { @Override public void run() { connectBluetooth(); } }); } public void connectBluetooth() { mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (!mBluetoothAdapter.isEnabled()) { Toast.makeText(this, "Enable Bluetooth and pair", Toast.LENGTH_LONG).show(); return; } BluetoothDevice device = mBluetoothAdapter.getRemoteDevice("98:D3:31:30:3B:D8"); for (BluetoothDevice x : mBluetoothAdapter.getBondedDevices()) { Log.d("Main", "Address: " + x.getAddress()); for (ParcelUuid uuid : x.getUuids()) { Log.d("Main", "parceluuid:" + uuid.toString()); } } try { mBluetoothAdapter.cancelDiscovery(); BluetoothSocket socket = device.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805f9b34fb")); socket.connect(); mRobotScheduler = new RobotScheduler(socket.getInputStream(), socket.getOutputStream(), 10); Toast.makeText(this, "Connected to arduino", Toast.LENGTH_SHORT).show(); mMapper = new SlightlyMoreAdvancedMapper(); } catch (IOException e) { Log.d("Main", "Exception connecting to bluetooth: ", e); } } public RobotScheduler getRobotScheduler() { return mRobotScheduler; } public SlightlyMoreAdvancedMapper getMapper() { return mMapper; } }